那么为什么当我这样做时下面给出 1 呢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
最后一个命令成功,因为它grep
是 for two
。
输出是:
grepping one
grepping three
grepping two
two
~$ echo $?
1
我期望 0。注意,如果循环中的任何命令失败,则将 rc 设为 1 是我真正想要的。但我想了解为什么在这种情况下会发生这种情况
答案1
最后一个命令可能会成功,但您只将失败的退出状态保存grep
到rc
.因此,如果任何一棵树grep
失败,您的脚本将以非零退出状态退出。