默认情况下,GNU Parallel引用替换字符串,以使它们不会被外壳扩展。但是在某些情况下,您确实希望替换字符串由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替换字符串中使用以使该替换不带引号:
parallel myprogram '{=1 uq(); =}' {2} :::: variables.txt ::: My*.txt
在早期版本中无法做到这一点。但是,您可以使用取消对完整命令的引用eval
。这解决了第一个问题,但没有解决第二个问题。
parallel eval myprogram {} :::: variables.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句