2010/10/30 土曜日

シェルスクリプトとphp

カテゴリー: — gabon @ 16:37:45

シェルスクリプトからphpを呼び出し、呼び出し結果によって、スクリプトの実行を制御したいことがあると思います。その場合、phpは実行結果を、戻り値で返さなければなりません。

以前なら、
うまくいったら、exit(TRUE);
ダメなら、exit(FALSE); 
と書いていたのですが、その場合、うまくいったら、1がもどることになり、ダメなら0がもどることになります。
これはlinuxの世界ではよろしくなく、
linuxの世界では、
0 が正常終了で、
0以外(-1や、1や128など)が異常終了を意味しますので、逆です。

ですから、php側では、
うまくいったら、exit(0);
うまくいかなかったら、exit(1); など任意のエラーコード
と書くべきです。

シェルスクリプト側の書き方ですが、
変数、$?  に呼び出したスクリプトからの結果コードが入ります。実際は、$?を見て制御するよりも簡単にかけます。

if ./hoge.php
  then echo “OK”
  else echo “NG”
fi
のように、if文の真は正常終了(phpのexit(0))になります。

おまけですが、
うまくいった場合に、次の処理を呼ぶような場合はよくあるかと思いますが、if文をネストするより、

./hoge.php && ./hoga.php

のように、&&で呼べば、前の処理が成功した場合に次の処理を呼ぶ、という書きかたができます。
(http://www.fireproject.jp/feature/bash/basic/if.html を参考にしました!)

コメントはまだありません »

コメントはまだありません。

このコメント欄の RSS フィード トラックバック URL

コメントをどうぞ

You must be logged in to post a comment.

HTML convert time: 0.352 sec. Powered by WordPress ME