我在 Amazon Linux 上使用 bash shell。我不明白为什么我的脚本因语法错误而崩溃。我的脚本是这样结束的
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(其中!=
会认为它们不同)。