![使用“sem”时计算失败的命令](https://linux22.com/image/130504/%E4%BD%BF%E7%94%A8%E2%80%9Csem%E2%80%9D%E6%97%B6%E8%AE%A1%E7%AE%97%E5%A4%B1%E8%B4%A5%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我想使用并行运行多个 shell 脚本sem
并获取失败命令的数量。但是,它们的退出代码始终为零:
sem bash -c 'exit 0'
echo $? # => 0
sem bash -c 'exit 1'
echo $? # => 0
sem --wait
echo $? # => 0
我怎样才能得到计数?
答案1
你不能。sem
不与进程通信,因此无法获取退出值。
如果您想要这样,请改用parallel
。
$ parallel "bash -c 'exit '{}" ::: 0 1 2 3 4 0
$ echo $?
4
这一直有效到 100。101 表示 > 100 个作业失败。
如果失败的作业比这个多,请使用--joblog
列中的失败数并进行计数Exitval
。