避免在 GNU 并行输入中反斜杠 space 字符

Avoid backslashing of space character in GNU parallel input

e这里需要你帮忙!

我想要的

使用 GNU parallel 将包含 space 的参数传递给命令,这样它就不会反斜杠了。

示例:

parallel --dry-run COMMAND {} ::: opt1 "opt2 arg" opt3

预期结果:

COMMAND opt1
COMMAND opt2 arg
COMMAND opt3

得到的结果:

COMMAND opt1
COMMAND opt2\ arg
COMMAND opt3

Space 字符被反斜杠使我的命令失败

为什么我想要它

我想要它是因为我的命令使用的选项仅在某些情况下才需要显式参数。我想 运行 多次使用不同的选项和不同的数据集。

因为它 必须 可能,我想知道怎么做!!

我试过的

所有这些变体和它们之间的所有(或至少许多)排列(即使有些可能没有意义):

parallel COMMAND {} ::: opt1 'opt2 arg' opt3
parallel -q COMMAND {} ::: opt1 "opt2 arg" opt3
parallel eval COMMAND {} ::: opt1 "opt2 arg" opt3
parallel COMMAND {} :::: file # one option per line trying both, quoted and unquoted
cat file | parallel COMMAND {}

A="opt2 arg"
parallel COMMAND {} ::: opt1 $A opt3

没有任何效果。我总是得到转义 space 的反斜杠。阅读手册但找不到解决我的问题的方法。我可能遗漏或不理解某些东西。

有什么建议吗??

非常感谢。

示例:您想要 运行 seq 5 10。这不起作用:

parallel seq ::: "5 10"

这个有效:

parallel eval seq ::: "5 10"

版本 >=20190722:

parallel seq {=uq=} ::: "5 10"