シェルスクリプトの関数についてのメモです。
・関数の型"foo() {comand;}"
・return [#]で戻り値を設定でき、"$?"で参照可能。戻り値を未設定の場合は関数内で最後に実行されたコマンドのステータスが代入されている。
・関数をそのまま実行すればカレントシェル、ファイルなどに結果を書き出せばサブシェルで実行する。前者のケースで実行時に関数内にファイル移動・変数変更・exitコマンドがあればカレントシェルに反映されるので要注意。
・関数内で呼んだ"$0"は関数を呼んだシェルスクリプトの名前を保持している。
・":"ヌルコマンドは何もしないで戻り値に0を必ず返す。無限ループ作成時などに使える。
・"."ドットコマンドは現行のシェルのプロセスを使って指定したファイルを実行する。
・"eval"はよくわからない。
・"exec"コマンドは引数のコマンドを新しいプロセスをつくらず、現行のシェルのプロセスと置き換えて実行する。
・"read"コマンドはキーボードからの入力を引数の変数にセットする。
・"readonly"コマンドは引数に指定したファイルを変更・unsetできなくする。
・"set"コマンドはシェルのオプションをオン・オフする。+でフラグオン。-でフラグオフ。
・"test"コマンドは条件を判定して真偽を返す。whileやifの条件判定に使う。
・"umask"コマンドはファイルを作成するときのモードを指定する。引数には3つの8進数の組み合わせをとる。
・"unset"コマンドは指定した変数・関数を消去する。
・"wait"コマンドは引数にしていした動作中のPIDが終了するまで待つ。引数未指定ならシェルから派生している子供のプロセスすべてが終わるまで待つ。
参考資料:入門UNIXシェルプログラミング 改訂第2版 第3章(発行所:SBクリエーティブ株式会社)
シェルスクリプト その1
シェルスクリプト その2
シェルスクリプト その4
シェルスクリプト その5
シェルスクリプト その6
シェルスクリプト その7