Quoting

如何告訴 GNU Parallel 不要引用替換字元串

  • July 11, 2019

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

引用自:https://unix.stackexchange.com/questions/529486