O GNU Parallel trata a entrada como um único argumento e a cita para que você possa usar com segurança nomes de arquivos como:
My brother's 12" records costs 30$ each.txt
No seu caso, você quer que o argumento seja analisado pelo shell, para que os espaços fiquem sem aspas:
parallel -a test_parallel eval compare {}
Ou você pode dividir no espaço:
parallel --colsep ' ' -a test_parallel compare {1} {2} {3} {4}
Mas, como você quer comparar todos os outros, tudo pode ser feito de maneira muito mais elegante:
parallel cmp -o ../out/cmp.{1}.{2} {1} {2} ::: Input* ::: Input*
Isto irá comparar todas as entradas * a todas as entradas *. Com --results
você pode obter as saídas bem estruturadas em um diretório:
parallel --results out/ cmp {1} {2} ::: Input* ::: Input*
Mas se você quiser pular cmp InputY InputX
depois de executar cmd InputX InputY
, poderá fazer isso:
parallel --results out/ cmp {=1' $arg[1] ge $arg[2] and $job->skip();' =} {2} ::: Input* ::: Input*