Некоторые программы не принимают подстановку процесса для входных файлов?

Я пытаюсь использовать подстановку процесса для входного файла программы, но это не работает. Причина в том, что некоторые программы не допускают подстановки процессов для входных файлов?

Следующее не работает:

bash -c "cat meaningless_name"
    >sequence1
    gattacagattacagattacagattacagattacagattacagattacagattaca
    >sequence2
    gattacagattacagattacagattacagattacagattacagattacagattaca
bash -c "clustalw -align -infile=<(cat meaningless_name) -outfile=output_alignment.aln -newtree=output_tree.dnd"
    (Less verbose output, finishing with:
    No sequences in file. No alignment!

Но следующие элементы управления работают:

bash -c "clustalw -align -infile=meaningless_name -outfile=output_alignment.aln -newtree=output_tree.dnd"
    (Verbose output, finishing with:
    CLUSTAL-Alignment file created  [output_alignment.aln]
bash -c "cat <(cat meaningless_name) > meaningless_name2"
diff meaningless_name meaningless_name2
    (No output: the two files are the same)
bash -c "clustalw -align -infile=meaningless_name2 -outfile=output_alignment.aln -newtree=output_tree.dnd"
    (Verbose output, finishing with:
    CLUSTAL-Alignment file created  [output_alignment.aln]

Это предполагает, что подмена процесса сама работает, но что clustalw Сама программа не любит подстановки процессов - возможно, потому что она создает нестандартный файл или создает файлы с необычным именем файла.

Часто ли программы не принимают замену процесса? Как мне проверить, действительно ли это проблема?

Я запускаю GNU bash версии 4.0.33 (1) -release (x86_64-pc-linux-gnu) в Ubuntu 9.10. Clustalw - это версия 2.0.10.

5
задан Andrew Grimm 25 November 2010 в 06:02
поделиться