GNU Parallel обрабатывает ввод как один аргумент и заключает его в кавычки, чтобы вы могли безопасно использовать такие имена файлов, как:
My brother's 12" records costs 30$ each.txt
В вашем случае вы хотите, чтобы аргумент был проанализирован оболочкой, поэтому пробелы не будут заключены в кавычки:
parallel -a test_parallel eval compare {}
Или вы можете разделить на пространство:
parallel --colsep ' ' -a test_parallel compare
Но так как вы хотите сравнить все со всеми, вы можете сделать это более элегантно:
parallel cmp -o ../out/cmp.. ::: Input* ::: Input*
Это позволит сравнить все входные данные * со всеми входными данными *. С помощью --results
вы можете получить хорошо структурированные результаты в директории:
parallel --results out/ cmp ::: Input* ::: Input*
Но если вы хотите пропустить запуск cmp InputY InputX
после того, как уже пробежали, cmd InputX InputY
то вы можете сделать это:
parallel --results out/ cmp {=1' $arg[1] ge $arg[2] and $job->skip();' =} ::: Input* ::: Input*