O GNU Parallel cita as strings de substituição por padrão para que elas não sejam expandidas pelo shell. Mas em certos casos você realmente quer que a string de substituição seja interpretada pelo shell.
Por exemplo
$ cat variables.txt
--var1 0.1 --var2 0.2
--var1 0.11 --var3 0.03
Aqui eu quero que o GNU Parallel seja executado:
myprogram --var1 0.1 --var2 0.2
myprogram --var1 0.11 --var3 0.03
Como isso é feito?
Como é feito, se apenas algumas das strings de substituição devem ser interpretadas:
Por exemplo
$ ls
My file1.txt
My file2.txt
E eu quero esta corrida:
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'
A partir da versão 20190722, você pode usar
uq()
uma string de substituição perl para tornar essa substituição sem aspas:Isso não pode ser feito em versões anteriores. Você pode, no entanto, retirar as aspas do comando completo com
eval
. Isso resolve o primeiro problema, mas não o segundo.