Estou tentando usar o GNU parallel para executar um comando para todas as combinações de vários sinalizadores de alteração de comportamento:
parallel 'cmd --foo {1} --bar {2} {3} out.foo={1}.bar={2}/{3/}' ::: 0 1 ::: 0 1 ::: in/*
Isso deve gerar uma série de invocações como:
cmd --foo 0 --bar 1 'in/fileXYZ' 'out.foo=0.bar=1/fileXYZ'
cmd --foo 1 --bar 0 'in/fileXYZ' 'out.foo=1.bar=0/fileXYZ'
No entanto, a CLI dessa ferramenta é irregular: --foo
aceita um argumento booleano, enquanto --bar
não aceita um argumento (e também não tem forma negativa). Assim, as invocações devem se parecer com isso:
cmd --foo 0 --bar 'in/fileXYZ' 'out.foo=0.bar=1/fileXYZ'
cmd --foo 1 'in/fileXYZ' 'out.foo=1.bar=0/fileXYZ'
Qual é a melhor maneira (menos prolixa) no GNU parallel de transformar um argumento de 1
ou 0
na presença ou ausência de --bar
na linha de comando?