このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

bashの関数の使い方

bashの場合、関数の戻り値が制限されていて、厳しい。

関数の仕事の成果として返す情報を3つに分類する。

  1. ステータス: return で返す終了ステータス。整数値しか返せない。
  2. 結果変数: 整数値以外が必要なら、適当なシェル変数にセットして終わる。
  3. 出力: 標準出力への書き込みで情報を返す。

それぞれの特徴:

  1. ステータス: 簡単、条件式として使える。整数か、整数によるbooleanしか返せない。
  2. 結果変数: 文字列や配列が返せる。変数管理がめんどくさい。
  3. 出力: 通常の戻り値に近いし、目視確認できる。受け側でバッククォートが必要。

戻り情報の受け取り方

  1. func; myvar=$?
  2. func; myvar=$result_var
  3. myvar=`func` または myvar=$(func)

使い方の方針

  • 出来るだけステータスを使う。整数で間に合わないときだけ結果変数か出力
  • 目視確認が必要だったり、結果を他のコマンドの引数にしたいときは出力
  • ライブラリなどでは結果変数
  • 2つを組み合わせてもいいが、3つの組み合わせはやめる。
  • 基本は、成功失敗をbooleanステータスとして、成功したときの値を変数または出力
  • 失敗した時の値は空文字列''にする。
  • 正常値として''があるときは、ステータスと併用する。

ドキュメントの書き方

  • $? なんたら
  • $result なんたら
  • stdout なんたら