在bash中,我知道如果我希望仅在命令&&
成功之后才运行B
命令,就应该使用A
:
A && B
但是,如果我想让
D
仅在A
,B
和C
全部成功之后才运行,该怎么办?是
'A&B&C' && D
好?
此外,如果我想确切地知道
A
,B
和C
中的哪个命令失败,该怎么办(因为它们将运行很多次,因此如果我一一检查,将花费一些时间)。一旦任何命令失败,错误信息是否会自动输出到文本文件?
在我的情况下,
A
,B
,C
是curl
,而B
是rm
,我的脚本是这样的:for f in *
do
curl -T server1.com
curl -T server2.com
...
rm $f
done
最佳答案
试试这个:
A; A_EXIT=$?
B; B_EXIT=$?
C; C_EXIT=$?
if [ $A_EXIT -eq 0 -a $B_EXIT -eq 0 -a $C_EXIT ]
then
D
fi
变量
A_EXIT
,B_EXIT
和C_EXIT
告诉您A
,B
和C
命令中的哪一个失败。您可以在每个命令后使用额外的if
语句输出到文件,例如A; A_EXIT=$?
if [ $A_EXIT -ne 0 ]
then
echo "A failed" > text_file
fi
关于linux - 仅在其他一些命令成功运行后,如何才能运行命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8403409/