在bash中,我知道如果我希望仅在命令&&成功之后才运行B命令,就应该使用A:

A && B

但是,如果我想让D仅在ABC全部成功之后才运行,该怎么办?

 'A&B&C' && D

好?

此外,如果我想确切地知道ABC中的哪个命令失败,该怎么办(因为它们将运行很多次,因此如果我一一检查,将花费一些时间)。

一旦任何命令失败,错误信息是否会自动输出到文本文件?

在我的情况下,ABCcurl,而Brm,我的脚本是这样的:
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_EXITB_EXITC_EXIT告诉您ABC命令中的哪一个失败。您可以在每个命令后使用额外的if语句输出到文件,例如
A; A_EXIT=$?
if [ $A_EXIT -ne 0 ]
then
  echo "A failed" > text_file
fi

关于linux - 仅在其他一些命令成功运行后,如何才能运行命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8403409/

10-12 12:20
查看更多