1

コマンドのステータスを判断する必要がある C シェル スクリプトを作成しました。以下のプログラム では、line 4コマンドは成功しませんでした。しかし、私はまだステータスを得まし0た。私はなぜなのか理解していない。私の理解によれば、私は を取得する必要があります1。私は正しいですか?Line No 3コマンドは成功しました。非常に基本的な質問であることは承知していますが、宿題ではありません。ジョブのステータスを判断する必要があるので、簡単なスクリプトで試してみました

Line 4このバージョンのツールを読み込めないというエラーが表示されます

1 #!/bin/csh -f
2         source /global/etc/csh.cshrc
3         module unload her
4         module load her/2012
5         echo $status
6         if ( $status != 0) then
7          echo "Error: abhishek Unable to execute  module load her/2012"
8          exit
9         endif
4

2 に答える 2

10

問題は、echo コマンドの後にステータスをテストしていることです。echo コマンドが成功したため、ステータスが 0 にリセットされました。問題を示すサンプル コードを次に示します。

#!/bin/csh -f

sh -c "exit 2"
echo status is $status or $?
echo status is $status or $?

出力する

status is 2 or 2
status is 0 or 0

他にできることは、エラーが発生するとすぐにスクリプトを終了させる #!/bin/csh -fe を使用することです。

于 2013-05-16T16:17:06.050 に答える