
みなさんこんにちは。プログラムを実行する必要があります。簡潔に説明します。すでに実行したことと、実行する必要があることについて説明します。
簡単に言うと、Bash で「シミュレーター」を作成し、生徒の演習を実行して正解かどうかを確認する必要があります。演習ごとにスコアを計算し、生徒が試験に合格したかどうかを判断します。
ほとんどすべてやりました... 書くべきコードが数行足りないだけだと思います... でも、それも最も重要なことだと思います... :(
私のスクリプトは TEST.SH で、生徒の演習を実行する必要があります。演習はスクリプト ELABORATO.SH です。これで、いくつかのシナリオが作成できます。
- ELABORATO.SH は、いくつかの値をパラメータとして入力するのを待機します。
- ELABORATO.SH は標準入力、キーボードからの入力を待機します。
- ELABORATO.SH は出力をファイル/fifo/その他に書き込みます。;
まず、解決するのは本当に簡単です...実際、私の TEST.SH からは
ELABORATO.SH
次のように呼び出します:. ELABORATO.SH param1 param2 param3;
2番目と3番目は私にとってはもっと複雑です。
ファイルから文字列を読み取り (問題ありません)、この文字列を
ELABORATO.SH
stdin からの文字列として渡す必要があります。...の出力を含むファイルを作成する必要があります
ELABORATO.SH
。たとえば、ELABORATO.SH
ファイル (出力ファイルの名前がわかりません) を生成する場合、別のディレクトリにもファイルを生成する必要があります... どうすればいいですか?
答え1
宿題* のようにも聞こえますが、やってみます。
なぜスクリプトをソースするのでしょうか
ELABORATO.SH
? スクリプトをソースして、exit
ステートメントやエラーが発生した場合、TEST.SH
同じ結果になります。 それが必要なことではないと思います。 スクリプトを実行するだけです:bash ELABORATO.SH param1 param2
入力をリダイレクトすることを考えましたか?
bash ELABORATO.SH param1 param2 < INPUT_FILE
の出力をキャプチャするには
ELABORATO.SH
、リダイレクトは作ったそのために?bash ELABORATO.SH param1 param2 < INPUT_FILE > OUTPUT_FILE
どのファイルが書き込まれるかを調べるのはELABORATO.SH
簡単ではありません。(余談ですが、出力ファイルがわからない場合、それらのファイルは のスコアの計算にどのように関係するのでしょうかELABORATO.SH
? わざわざそれらを移動させる必要があるのでしょうか?)
とにかく、始めましょう。次のパイプラインは、によって作成されたファイルをリストしますELABORATO.SH
。
strace bash ELABORATO.SH params < INPUT_FILE 2>&1 > OUTPUT_FILE \
| grep '^open(.*O_CREAT' | cut -d\" -f 2
次に、それらを別の場所に移動するには、次のようにします。
for f in $(
strace bash ELABORATO.SH params < INPUT_FILE 2>&1 > OUTPUT_FILE
| grep '^open(.*O_CREAT' | cut -d\" -f 2)
do
mv "$f" /path/to/elsewhere
done
*) AskUbuntu のフレンドリーな人々を上司に推薦してください。