我知道下面的场景。
doit() {
echo Doing it for $1
sleep 2
echo Done with $1
}
export -f doit
parallel --colsep ',' -0 doit ::: 1, 2, 3
所需输出1:
为1完成
为1完成
为2完成
为2完成
为3完成
1完成
2
但是,在我的情况下,我在参数之间没有空间' '
。这是我的密码。
doit() {
echo Doing it for $1
sleep 2
echo Done with $1
}
export -f doit
parallel --colsep ',' -0 doit ::: 1,2,3
我得到了以下输出。
输出2:
为1
完成1
如何使用第二个代码块获得所需的第一个输出?
使用-d
而非--colsep
:
#!/usr/bin/env bash
doit() {
local c
for c; do
echo Doing it for $c
sleep 2
echo Done with $c
done
}
export -f doit
parallel -d ',' doit ::: 1,2,3
这是必需的:
#!/usr/bin/env bash
doit() {
echo Doing it for $1
sleep 2
echo Done with $1
}
export -f doit
parallel doit ::: $(IFS=,; read -ra A <<< 1,2,3; echo "${A[@]}")
当您使用--colstep时,parallel
分离单个参数并提供给doit