【发布时间】:2014-02-21 20:39:10
【问题描述】:
我使用包装器自动生成一个文件,该包装器像这样并行执行一系列命令
C1 p1 p2 p3 > logfile1 2>& 1 & # call is I_1
C1 p1 p2 p3 > logfile2 2>& 1 & # I_2
C1 p1 p2 p3 > logfile3 2>& 1 &
C1 p1 p2 p3 > logfile4 2>& 1 &
该文件已经由包装进程自动生成我想做的是这个。如果 I_1 失败,则终止 I_2 之后的所有内容。
我想这样做的一种方法是找到2>& 1 & 的第一个实例并将末尾的“&”删除到2>& 1,这将在fg 中运行它,然后将这些行{ rc= $? && [ "$rc" -ne 0 ] && return $rc ; } 添加到以下行。所以遵循这个 - 结果看起来像这样
C1 p1 p2 p3 > logfile1 2>& 1 # removed &
{ rc=$? && [ "$rc" -ne 0 ] && return $rc ; }
C1 p1 p2 p3 > logfile2 2>& 1 & # I_2
C1 p1 p2 p3 > logfile3 2>& 1 &
C1 p1 p2 p3 > logfile4 2>& 1 &
一些 AWK 或 Sed 可以完成这项工作。或者是否有更好的方法来实现这一点。
【问题讨论】: