, поэтому ошибка, которую я получаю, является синтаксической ошибкой возле неожиданного токена` fi' на втором последнем 'fi'. Некоторое время царапала мне голову. Любая помощь очень ценится! Благодаря!Почему: Синтаксическая ошибка Bash возле неожиданного токена `fi '
#!/bin/bash
TFILE=/tmp/scripts/pdsh_demo.tmp
if [ -f $TFILE ]; then
rm $TFILE
fi
/usr/bin/pdsh -R ssh -w host[0001-0200] 'command | grep -v "something"' >> $TFILE
if [ ! -s $TFILE ]; then
exit
fi
if [ -f $TFILE ]; then
if grep -q "something" $TFILE ; then
grep -i "something" $TFILE | mailx -r "test.server" -s "Critical: something" -a $TFILE "[email protected]"
fi
fi
Я не могу воспроизвести проблему, и код выглядит нормально. Я бы поставил кавычки вокруг '$ TFILE' повсюду, но это имеет значение только в том случае, если имя файла содержит пробелы или метасимволы и не должно вызывать эту ошибку с текущим значением. Дикая догадка: используете ли вы Cygwin, и имеет ли сценарий окончания строки Windows? – Wintermute
, пожалуйста, предоставьте минимальный набор входных данных, которые воспроизводят проблему. – pcantalupo
** Всегда ** укажите свои имена в bash. (например, '' $ TFILE "). В противном случае, если он содержит пробел, часть после пробела может быть интерпретирована как отдельная команда и т. д. и обычно вызывает этот тип ошибок в коде. Согласно Wintermute, остаток выглядит отлично. –