Quoting
如何告訴 GNU Parallel 不要引用替換字元串
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 替換字元串中使用以使該替換不被引用:parallel myprogram '{=1 uq(); =}' {2} :::: variables.txt ::: My*.txt
這在早期版本中無法做到。但是,您可以使用
eval
. 這解決了第一個問題,但沒有解決第二個問題。parallel eval myprogram {} :::: variables.txt