Pagina 1 di 2
BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 16:21
da danix
Ciao a tutti,
da quel poco che ho capito non si può fare l'espansione dei caratteri in una verifica, ma a me servirebbe, ad esempio, ho questa situazione:
lo script pippo.sh va lanciato con un argomento che sia un altro script con estensione
.ext da cui fare il source, io vorrei verificare che, se lo script non finisce per .ext, pippo.sh esca restituendo un errore.
a prima vista farei così:
ma ovviamente non funziona, allora ho pensato di usare egrep in questo modo:
Codice: Seleziona tutto
if [ ! -z $1 ];then
if egrep -q ".ext$" "$1";then
...
ma anche questo non va...

come consigliate di fare??
Grazie mille a tutti

Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 16:42
da Zeros
Ciao,
echo ${1:-4}
ricevi gli ultimi 4 caratteri della variabile stringa $1
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 16:43
da Ansa89
Codice: Seleziona tutto
if [ ! -z $1 ];then
if echo $1 | egrep -q ".ext$" ; then
...
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 16:44
da Mario Vanoni
Molto semplicistico
Codice: Seleziona tutto
#!/bin/sh
if [ ! -e ${1}.ext ]
then
echo ERROR
else
echo EXIST
fi
chiamo pippo, se non esiste pippo.ext ...
chiami pippo.ext da ERROR
Non capisco perche' nel test usi l'opzione -z ???
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 16:45
da conraid
if [ ${1##*.} == "ext" ]; then
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 16:47
da Ansa89
Mario Vanoni ha scritto:Non capisco perche' nel test usi l'opzione -z ???
Con "-z" controlla che il parametro sia stato passato, in seguito controlla che il parametro sia corretto.
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 17:06
da Mario Vanoni
Ansa89 ha scritto:Mario Vanoni ha scritto:Non capisco perche' nel test usi l'opzione -z ???
Con "-z" controlla che il parametro sia stato passato, in seguito controlla che il parametro sia corretto.
man test
quindi con
if [ ! -z $1 ];then
controlla solo se un parametro non vuoto esiste!
con [ ! -e ${1}.ext ] ...
sai subito che il file non esiste ed esci subito dal programma.
Vecchia regola, al primo errore uscire!
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 17:13
da danix
Mario Vanoni ha scritto:Ansa89 ha scritto:Mario Vanoni ha scritto:Non capisco perche' nel test usi l'opzione -z ???
Con "-z" controlla che il parametro sia stato passato, in seguito controlla che il parametro sia corretto.
man test
quindi con
if [ ! -z $1 ];then
controlla solo se un parametro non vuoto esiste!
con [ ! -e ${1}.ext ] ...
sai subito che il file non esiste ed esci subito dal programma.
Vecchia regola, al primo errore uscire!
forse è ridondante come l'ho scritto, ma a me serve anche sapere se un parametro è stato passato o meno... Il codice che ho scritto nell'esempio è un estratto di quello che sto scrivendo...
Grazie a tutti per le soluzioni proposte

Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 17:37
da Mario Vanoni
danix ha scritto:
forse è ridondante come l'ho scritto, ma a me serve anche sapere se un parametro è stato passato o meno...
Ma ti serve sapere veramente se un parametro e` stato passato,
o IMVHO se il file necessario e` presente o no?
Con o senza parametro, con test -e hai la risposta!
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 17:38
da danix
Mario Vanoni ha scritto:danix ha scritto:
forse è ridondante come l'ho scritto, ma a me serve anche sapere se un parametro è stato passato o meno...
Ma ti serve sapere veramente se un parametro e` stato passato,
o IMVHO se il file necessario e` presente o no?
Con o senza parametro, con test -e hai la risposta!
mi serve sapere se un parametro è stato passato...

Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 17:50
da Ansa89
Mario Vanoni ha scritto:Con o senza parametro, con test -e hai la risposta!
Se lo script passato come parametro è nella stessa directory, ma se è uno script dentro $PATH l'opzione "-e" non funziona:
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 18:02
da danix
infatti nello script che sto buttando giù verifico che ci sia un argomento (e che sia valido e leggibile) oppure che ci sia lo script in questione nella directory in cui è stato lanciato il programma...

Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 18:10
da targzeta
danix ha scritto:Ciao a tutti,
da quel poco che ho capito non si può fare l'espansione dei caratteri in una verifica
allora hai capito veramente poco

danix ha scritto:...a prima vista farei così:
ma ovviamente non funziona
Prova con:
Portando l'asterisco fuori dalla quotatura (altrimenti pensa che cerchi un '*' no?).
Emanuele
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 19:46
da Mario Vanoni
bash(1), csh(1), ksh(1) e test(1) non sono concordi sui test multipli, sic!
Con bash(1) con una riga sola funziona
Codice: Seleziona tutto
#!/bin/sh
if [[ ! -z ${1} ]] && [[ -e ${1}.ext ]]
then
echo EXISTS
else
echo ERROR
fi
pippo
ERROR
pippo ee
ERROR
pippo pippo
EXISTS
Re: BASH - verifica stringa con espansione caratteri jolly
Inviato: mer 26 mag 2010, 20:45
da targzeta
Mario Vanoni ha scritto:bash(1), csh(1), ksh(1) e test(1) non sono concordi sui test multipli, sic!...
Beh, questa è una bella scoperta e mi fa piacere per te Mario, ma che c'entra con il thread in questione?
Emanuele