In uno script bash
, devo verificare l'esistenza di diversi file.Bash: come faccio a verificare se alcuni file esistono?
so un modo scomodo per farlo, che è la seguente, ma ciò significherebbe che il mio programma principale deve essere all'interno di quella brutta struttura annidata:
if [ -f $FILE1 ]
then
if [ -f $FILE2 ]
then
echo OK
# MAIN PROGRAM HERE
fi
fi
La seguente versione non funziona:
([ -f $FILE1 ] && [ -f $FILE2 ]) || (echo "NOT FOUND"; exit 1)
echo OK
Esso stampa
NOT FOUND
OK
c'è un modo elegante per fare questo diritto?
AGGIORNAMENTO: Vedere la risposta accettata. Inoltre, in termini di eleganza Mi piace Jonathan Leffler's answer:
arg0=$(basename $0 .sh)
error()
{
echo "$arg0: [email protected]" 1>&2
exit 1
}
[ -f $FILE2 ] || error "$FILE2 not found"
[ -f $FILE1 ] || error "$FILE1 not found"
Grazie, sembra buono. Solo il 'o' (||) dovrebbe essere un 'e' (&&), immagino. – Frank
già risolto :) difficile con la logica di sera :) –