我有一个shell命令列表,作为字符串存储在变量prog中,目前我通过
for I in 1 10; do
eval "${prog[$I]}"&
done
wait
如何用GNU并行实现同样的结果呢?
parallel ::: seq 1 10 | { read -d '' x; eval "${prog[$x]}"; }
但我甚至不能得到上面的工作两个平行:::所以很明显我做错了
一个侧记我设法得到以下运行
parallel ::: $( for i in {1..2}; do eval ${prog[$i]}; done )
但它并没有并行地这样做。
2条答案
按热度按时间jei2mxaa1#
您正在寻找:
snz8szmq2#
虽然不完全令人满意,但我最终采用了以下解决方案:
我并不完全满意,因为我刚刚发现我不能使用进度条沿着--pipe,而且我不知道如何使用pipe。所以如果有人知道,请告诉我。另外,我无法找到一种方法来做到这一点,而不像上面那样结合双精度和单精度quites,所以看起来也有点奇怪。当我通过shell检查运行这个程序时,它说例如
尽管如此,它仍然工作,并产生预期的结果与正确的参数到可执行文件,所以它仍然是一个解决方案(它避免了使用eval,因为我以前尝试,所以这是一些额外的好处)。