2015-03-27 4 views
0

, поэтому ошибка, которую я получаю, является синтаксической ошибкой возле неожиданного токена` 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 
+2

Я не могу воспроизвести проблему, и код выглядит нормально. Я бы поставил кавычки вокруг '$ TFILE' повсюду, но это имеет значение только в том случае, если имя файла содержит пробелы или метасимволы и не должно вызывать эту ошибку с текущим значением. Дикая догадка: используете ли вы Cygwin, и имеет ли сценарий окончания строки Windows? – Wintermute

+0

, пожалуйста, предоставьте минимальный набор входных данных, которые воспроизводят проблему. – pcantalupo

+1

** Всегда ** укажите свои имена в bash. (например, '' $ TFILE "). В противном случае, если он содержит пробел, часть после пробела может быть интерпретирована как отдельная команда и т. д. и обычно вызывает этот тип ошибок в коде. Согласно Wintermute, остаток выглядит отлично. –

ответ

-3

в

if grep -q "something" $TFILE ; then 

должен быть

if [ $(grep -q "something" $TFILE) ]; then 
+3

Thats just plain wrong –

+3

Исходная форма не только правильная - код выхода команды 'grep' определяет, будет ли тест успешным - ваша переформулировка не будет работать вообще:' grep -q' по дизайну ничего не выводит , поэтому вы проверяете _пустую строку_, которая всегда ложна. Без '-q' команда будет ломаться, если выход' grep' содержит пробелы. – mklement0

+0

Да, попробовал это, чтобы быть уверенным и не работает! Спасибо хоть! –

 Смежные вопросы

  • Нет связанных вопросов^_^