Warum gibt das Folgende 1, wenn ich es tue echo $?
?
#!/bin/bash
echo "two">file.txt
ARRAY=(one three two)
rc=0
for i in ${ARRAY[@]}; do
echo "grepping $i "
grep "$i" file.txt || rc=$?
done
exit $rc
Der letzte Befehl ist erfolgreich, da es grep
für ist two
.
Die Ausgabe ist:
grepping one
grepping three
grepping two
two
~$ echo $?
1
Ich habe mit 0 gerechnet. Beachten Sie, dass ich rc als 1 erhalten möchte, wenn ein Befehl in der Schleife fehlschlägt. Aber ich möchte verstehen, warum dies in diesem Fall geschieht
bash
shell-script
shell
Jim
quelle
quelle
set -e
auch das erreichen, wonach ich suche?set -e
würde das Skript beenden, sobald der erstegrep
nichts findet. Wenn du das willst, dann ok.