2011-08-04 7 views
0

私はShellScript Unixで遊んでいますので、愚かな質問かもしれません。もしそうなら謝罪してください。シンプルなbashシェルスクリプト出口での奇妙な動作

私は、コードの不都合な状況に適切に対処するために終了コードを処理しようとしていました。このために、コードスニペットを作成して、UNIXの終了動作を理解しました。ここでは、次のとおりです。

#!/usr/bin/bash 
RES=1 

if [ $RES -eq 0 ] 
then  
    echo "Finishing with success!" 
    exit 0 
else  
    echo "Finishing with error!" 
    exit 1 
fi 

私はコードが呼び出される(及び終了)されると、ということが理解私は戻ってbashプロンプトに行くだろう。しかし、exit命令もbashから出ているようです。それは普通ですか?多分私の開発環境に関連するものでしょうか?ここで

bash-3.00$ . errtest.sh 
Finishing with error! 
$ echo $? 
1 
$ bash 
bash-3.00$ which bash 
/usr/bin/bash 

...メッセージで参考のために、私はリターンとbashの場所を追加しました。それが役に立てば幸い。

ありがとうございます!

答えて

4

これは、現在の環境で(。コマンドを使用して)スクリプトを使用しているためです。

bash ./errtest.sh 

またはスクリプトファイルに必要な権限を与え、このようにそれを実行することによって:

chmod u+x ./errtest.sh 
./errtest.sh 
+0

グレートいずれかでスクリプトを実行してみてください!それはまさに問題の解決策です、多くのありがとう、@ Dimitre Radoulov。 –

+0

実際、助成金のほかに、私もスクリプトを間違って呼んでいました。私がスラッシュなしで電話すると、それはまだbashなしでプロンプトに戻ります。だから...私はいつもスラッシュを使用する必要があります。説明ありがとう! –

+0

答えを知って、それの背後にある理由を見つけることは簡単です。他の誰かが同じ質問に該当する場合には、参考のためにここに追加します:http://stackoverflow.com/questions/6331075/why-do-you-need-dot-slash-before-script-name-to -run-it-in-bash –