【发布时间】:2011-12-06 16:33:43
【问题描述】:
在 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失败,您要运行B和C吗?只要任何命令失败,A && B && C && D就会退出。但是,如果您想无条件地运行A、B和C,然后仅在它们都成功时运行D,那么请参阅@Adam 的答案。 (不,A&B&C && D不会做你想做的事;单个&会导致命令在后台运行。) -
可以用括号吗?