
Ich verwende die Bash-Shell unter Amazon Linux. Ich kann nicht herausfinden, warum mein Skript mit einem Syntaxfehler abstürzt. Mein Skript endet so
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
und wenn ich es ausführe, druckt es die letzten beiden Echo-Anweisungen aus, scheint danach aber abzustürzen
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
Kann mir jemand sagen, warum es mit dem unerwarteten Dateiende-Fehler abstürzt?
Antwort1
Die kurze Antwort lautet: Es fi
muss ein separater Befehl sein, Sie benötigen also Semikolons:
if [ $rc1 != 0 ]; then exit $rc1; fi
if [ $rc2 != 0 ]; then exit $rc2; fi
Sie sollten Ihre Variablen in Anführungszeichen setzen und, da Sie ganze Zahlen vergleichen, den entsprechenden Operator verwenden:
if [ "$rc1" -ne 0 ]; then exit "$rc1"; fi
if [ "$rc2" -ne 0 ]; then exit "$rc2"; fi
obwohl das Verhalten hier etwas anders ist: Leere Werte werden als gleich 0 betrachtet (wobei !=
sie als anders betrachtet würden).