Попытка выйти из скрипта с кодом состояния, но получаю «неожиданный конец файла»

Попытка выйти из скрипта с кодом состояния, но получаю «неожиданный конец файла»

Я использую bash shell на Amazon Linux. Я не могу понять, почему мой скрипт умирает с синтаксической ошибкой. Мой скрипт заканчивается так

chmod 775 $TFILE2
output_file=$( create_test_results_file "$TFILE2" )
(cat $TFILE2; uuencode $output_file $output_file) | mailx -s "$subject" "$to_email"
rm $output_file
echo "sent second email"

#Cleanup
rm $TFILE1
rm $TFILE2
echo "removed files"

# If node exited unsuccessfully, verify we alert the process above.
if [ $rc1 != 0 ]; then exit $rc1 fi
if [ $rc2 != 0 ]; then exit $rc2 fi

и когда я его запускаю, он выводит последние два оператора echo, но затем, кажется, умирает после этого

sent second email
removed files
/home/jboss/.jenkins/jobs/springboard/workspace/automated-tests/nodejs/run_tests.sh: line 86: syntax error: unexpected end of file

Может ли кто-нибудь сказать мне, почему он умирает из-за неожиданной ошибки конца файла?

решение1

Короткий ответ — это fiдолжна быть отдельная команда, поэтому вам нужны точки с запятой:

if [ $rc1 != 0 ]; then exit $rc1; fi
if [ $rc2 != 0 ]; then exit $rc2; fi

Вам следует заключать переменные в кавычки, и поскольку вы сравниваете целые числа, используйте соответствующий оператор:

if [ "$rc1" -ne 0 ]; then exit "$rc1"; fi
if [ "$rc2" -ne 0 ]; then exit "$rc2"; fi

хотя поведение здесь немного отличается: пустые значения будут считаться равными 0 (где !=их можно было бы считать разными).

Связанный контент