ワイルドカードを使用したリダイレクトをテストしています。何かのようなもの:
./TEST* < ./INPUT* > OUTPUT
誰にもお勧めはありますか?ありがとう。
、、、、、の 5 つのファイルがTEST1
あるTEST1
とINPUT1
しINPUT2
ますOUTPUT
。コマンドライン
./TEST* < ./INPUT* > OUTPUT
に拡大します
./TEST1 ./TEST2 < ./INPUT1 ./INPUT2 > OUTPUT.
./TEST1
つまり、 2 つの引数 ( ./TEST2
, ./INPUT2
) を指定してコマンドを実行し、入力を からリダイレクトし./INPUT1
、出力を にリダイレクトしOUTPUT
ます。
おそらくやろうとしていることに対処するために、入力リダイレクトを使用して単一のファイルのみを指定できます。TEST
両方のファイルから入力を送信するにINPUT*
は、プロセス置換を使用して、次のようなものを使用する必要があります。
./TEST1 < <(cat ./INPUT*) > OUTPUT
TEST*
一致するすべての入力ファイルで一致する各プログラムを実行するにはINPUT*
、次のループを使用します。すべてのコマンドの出力を収集し、1 つのファイルにまとめますOUTPUT
。
for test in ./TEST*; do
cat ./INPUT* | $test
done > OUTPUT
INPUT* と呼ばれるさまざまなリダイレクトを取得する必要がある TEST* というプログラムがあります。私がやろうとしているのは、すべてのランダムな INPUT ファイルをすべてのすべての TEST プログラムにプッシュすることです。
あなたは書ける:
for program in TEST* # e.g., program == 'TEST678'
do
suffix="${program#TEST}" # e.g., suffix == '678'
input="INPUT$suffix" # e.g., input == 'INPUT678'
"./$program" < "$input" # e.g., run './TEST678 < INPUT678'
done > OUTPUT
for test in ./TEST*; do
for inp in ./INPUT*; do
$test < $inp >> OUTPUT
done
done