我想使用并行运行多个 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
。