2013-05-06 5 views

risposta

95

Quindi, per far funzionare la tua espressione, cambiare && per -a farà il trucco.

È corretto in questo modo:

if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ] 
then .... 

o come

if [[ -f $VAR1 && -f $VAR2 && -f $VAR3 ]] 
then .... 

o anche

if [ -f $VAR1 -a -f $VAR2 -a -f $VAR3 ] 
then .... 

Potete trovare ulteriori dettagli in questa domanda bash : Multiple Unary operators in if statement e alcuni riferimenti forniti lì come What is the difference between test, [ and [[ ?.

+1

grazie mille! Farò la risposta accettata molto presto! ;) –

+8

Si noti che [POSIX] (http://pubs.opengroup.org/onlinepubs/000095399/utilities/test.html#tag_04_140_16) raccomanda l'uso di '&&' e '||' con la notazione a parentesi quadra su ' -a' e '-o', quindi se stai scrivendo codice portatile vai per la prima notazione, altrimenti la seconda e salta la terza, soprattutto perché può diventare scomoda e difficile da leggere se hai bisogno di raggruppare le espressioni. –