シェルスクリプトで実行できないコマンドの処理

シェルスクリプトで実行できないコマンドの処理

私は次の課題を受けました。 *.tex ファイルをコマンドライン引数として使用し、ファイルがエラーなしで正しく実行されることを確認する Bash スクリプトを作成します。エラーや警告なしで実行されると、ファイルにタグ2が割り当てられます。 (コンパイル中に警告が発生した場合は1表示、エラーが表示された場合は0表示)。

警告なしでファイルにタグを割り当てることも、警告があるファイルにタグを割り当てることもできます。ここに私のコードのいくつかの行を示します。

#!/bin/bash
rm t.txt
pdflatex $1 >> t.txt
message=`tail -2 t.txt|grep -i "output"|cut -c 1-6`

コマンドを実行した後、pdflatex私のスクリプトは「出力」や「警告」などの適切な単語を検索し、それに応じてタグを割り当てます。ただし、ファイルにエラーがある場合は、pdflatex「x」と入力した場合にのみコマンドが終了します。ユーザーが「x」と入力することを期待しているので、そこで待ちます。スクリプトを実行すると出力は表示されませんが、xを印刷するとファイルにタグ0が割り当てられます。

ただし、このプログラムを自動コード評価者に提供する必要があります。その後、私のコードをチェックし、すべての場合に私のコードが正しいかどうかを教えてくれます。

どうすればいいですか?

ベストアンサー1

対話型入力を待たないようにpdflatexに指示します。

pdflatex -interaction nonstopmode "$1"

コマンドがゼロ以外の状態($?)を返すと、エラーが発生したため0になります。それ以外の場合は、ログファイル($1既存の拡張子の代わりに使用.log)に単語が含まれているかどうかをテストしますWarning。そうであれば1と表示され、そうでなければ0と表示されます。

おすすめ記事