ファイル列の各エントリに対してコマンドを実行したいと思います。現在、次のことを行っていますが、あいまいなリダイレクトエラーが発生します。
while read -r entry;
do
cmd "$entry" ;
done < $(cut -f2 file.tsv)
私も試しました
done <(cut -f2 file.tsv)
予期しないトークン構文エラーが発生します。
これを行う正しい構文は何ですか?
入力例
タブで区切られた値は、目的の列のファイルパスを持つファイルです。
1 file1.txt ...
2 file2.txt ...
3 file3.txt ...
予想される結果
スクリプトは次のコマンドを実行する必要があります。
cmd file1.txt
cmd file2.txt
cmd file3.txt
簡単な例を目的としてエラーがないため、cat
asを使用できます。cmd
cmd
それ自体しかし、入力リダイレクトがあります。
私が実行した実際の命令は生物情報学ツールでした。カリスト、具体的にkallisto quant
。
ベストアンサー1
これが正しいアプローチのようです。
while read -r entry;
do
cmd "$entry" ;
done < <(cut -f2 file.tsv)
~によるとこのbashリダイレクトチートシート、この構文はの出力をcut -f2 file.tsv
匿名fifoに渡し、それをstdinに渡します。