我有一段bash代码循环遍历由空格分隔的字符串中的文件名。然后,它针对每个文件名运行一个函数。它看起来像这样:
TCURR=0
for F in $FILES; do
TCURR=$[TCURR + 1]
do_something $TCURR $F &
done
wait
如何使用gnu parallel进行此操作?我无法弄清楚如何将$ FILES变量传递给它,以便它可以工作。
这是我尝试过的,两者都不起作用。我将这些基于并行示例页面。我只是发送1代替TCURR作为函数的第一个变量以简化,虽然我也想知道如何做到这一点。
$FILES | parallel "do_something 1 {}"
echo $FILES | parallel "do_something 1 {}"
答案 0 :(得分:2)
parallel do_something {#} {} ::: $FILES
答案 1 :(得分:1)
你可能想要这个:
#!/bin/bash
FILES=....
TCURR=0
for F in $FILES; do
((TCURR++))
echo do_something $TCURR $F
done | parallel
答案 2 :(得分:0)
想出来,只需要变量周围的引号。所以它看起来像:
echo "$FILES" | parallel "do_something 1 {}"
虽然我还没弄清楚如何使计数器工作