В сценарии bash
я должен проверить наличие нескольких файлов.Bash: Как проверить, существуют ли определенные файлы?
Я знаю неудобный способ сделать это, которая заключается в следующем, но это означало бы, что моя основная программа должна быть в пределах этой уродливой вложенной структуры:
if [ -f $FILE1 ]
then
if [ -f $FILE2 ]
then
echo OK
# MAIN PROGRAM HERE
fi
fi
Следующая версия не работает:
([ -f $FILE1 ] && [ -f $FILE2 ]) || (echo "NOT FOUND"; exit 1)
echo OK
Он печатает
NOT FOUND
OK
есть элегантный способ сделать это правильно?
ОБНОВЛЕНИЕ: См. Принятый ответ. Кроме того, с точки зрения элегантности мне нравится 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"
Спасибо, что хорошо выглядит. Просто «или» (||) должно быть «и» (&&), я думаю. – Frank
исправлено уже :) сложно с логикой вечером :) –