GNU并行-如何处理没有空格或换行符的列分隔符



我知道下面的场景。

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

相关内容

  • 没有找到相关文章

最新更新