Shell

シェルスクリプトの入門編14:関数を作ってみる

どうも、シローです。

シェルスクリプトも他のプログラミング言語と同じく、関数を作ることができます。

今回は関数の使い方についてまとめていきます。

関数について

プログラムにおいて一連の処理において、一部を置き換えて何回も実行したいというケースがある。

  • 数値を引数にして、計算式を実行
  • ファイル名を引数にして、テキストファイルを生成

などなど

こういった、可変の情報を受け取って、一定の処理をするものを関数という。

シェルスクリプトにおける関数の定義、呼び出し方

シェルスクリプトにおける関数は次のように記述する。

PHPやJavaScriptとは

  • 関数の宣言に引数を決める部分が無く
  • 実行するときには関数名(引数1, 引数2)ではなく、関数名 引数1 引数2という記述になる

部分が異なる

また、関数の実行部分よりも前に関数を宣言しないといけないのもポイントである。

関数に渡された引数を呼び出す

関数に渡した引数は渡した順番通りに$1,$2,$3といった値に渡されます。

サンプル:三角形の面積を計算する関数

小数点の計算にはbcコマンドを使用している。

calc_try.sh

実行

変数のスコープ

基本的に関数の外で定義した変数を関数内で参照することはできます。また、関数内で上書きすると、関数の実行後もその変数の値は上書きされたままになります。

fparam.sh

実行

関数内でのローカル変数

変数を関数の中だけに影響させたい場合は、localを変数の前につけます。

local_fparam.sh

実行

通常は、関数内で関数外の変数を上書きしたりすると、エラーの原因がよく分からなかったりする原因になるのでlocalをつけて関数内でしか適用しないようにするみたいです。

まとめ

  • 関数の宣言を先に書いてから、関数を実行する
  • 関数に渡した引数は位置パラメータ($1,$2,$3...)に渡される
  • 関数の外で渡した変数を参照できる、また上書きすることもできるが、localをつけることで関数内に限定させることができる
  • この記事を書いた人

シロー

Webシステムの開発のお仕事をさせて頂いております。 フリーランスの日常、Web開発に関する情報を発信しています。 趣味はゲーム、映画鑑賞、個人サービスを作ることです。

-Shell

© 2021 Shiro's secret base