向 GNU 并行转发空参数不起作用?
Foward empty arguments to GNU parallel does not work?
我有以下
function doit() { echo "'', '', ''"; }
export -f doit
args=("a" "") # Empty argument
echo -e "1\n2" | parallel -k "doit" "${args[@]}" {}
不转发空参数:
'a', '1', ''
'a', '2', ''
应该是
'a', '', '1'
'a', '', '2'
parallel 为什么会这样,如何解决?
parallel
将字符串传递给 bash -c
- 它们根据 shell 规则进行解释,空参数只是连接起来并进行分词扩展。
如果您想保留参数,请引用它们。 "$(printf "%q " "${args[@]}")"
手动或只是 parallel -q
或 parallel --quote
.
我有以下
function doit() { echo "'', '', ''"; }
export -f doit
args=("a" "") # Empty argument
echo -e "1\n2" | parallel -k "doit" "${args[@]}" {}
不转发空参数:
'a', '1', ''
'a', '2', ''
应该是
'a', '', '1'
'a', '', '2'
parallel 为什么会这样,如何解决?
parallel
将字符串传递给 bash -c
- 它们根据 shell 规则进行解释,空参数只是连接起来并进行分词扩展。
如果您想保留参数,请引用它们。 "$(printf "%q " "${args[@]}")"
手动或只是 parallel -q
或 parallel --quote
.