我有一个bash数组:
nodes=(
"command"
"command arg"
...
)
我想使用GNU parallel运行带有所有已附加参数的所有命令。
我试过了
printf '%s\n' "${nodes[@]}" | parallel python
和
parallel python ::: "${nodes[@]}"
输出命令是
python path_to_file\ arg
并且它给出的错误是“无法打开文件'path_to_file arg'”
我认为问题必须是反斜杠-当我不并行运行命令时遇到相同的错误。
如何防止反斜杠插入?
尝试:
printf '%s\n' "${nodes[@]}" | parallel eval python
eval
是一个shell命令,它将字符串评估为shell表达式。我通常使用它来“取消引用”字符串。
要么:
printf '%s\n' "${nodes[@]}" | parallel python {=uq=}
较新版本的GNU Paralleluq()
保留了未引用的值。通常,GNU Parallel将引用值。
要么:
printf '%s\n' "${nodes[@]}" | parallel
上面规则的例外是没有命令时。然后,该值被取消引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句