GNU Parallel 默认引用替换字符串,这样它们就不会被 shell 扩展。但在某些情况下,您确实希望 shell 解释替换字符串。
例如
$ cat variables.txt
--var1 0.1 --var2 0.2
--var1 0.11 --var3 0.03
在这里,我希望 GNU Parallel 运行:
myprogram --var1 0.1 --var2 0.2
myprogram --var1 0.11 --var3 0.03
这是怎么做的?
如果只解释一些替换字符串,它是如何完成的:
例如
$ ls
My file1.txt
My file2.txt
我想要这个运行:
myprogram --var1 0.1 --var2 0.2 'My file1.txt'
myprogram --var1 0.11 --var3 0.03 'My file1.txt'
myprogram --var1 0.1 --var2 0.2 'My file2.txt'
myprogram --var1 0.11 --var3 0.03 'My file2.txt'
从版本 20190722 开始,您可以
uq()
在 perl 替换字符串中使用以使该替换不被引用:这在早期版本中无法做到。但是,您可以使用
eval
. 这解决了第一个问题,但没有解决第二个问题。