使い方

シェルスクリプトで関数を定義する。

function greeting () {
    echo "Hello, $1"
    return 0
}

関数を呼び出す。

greeting "World"

参考:

シェルスクリプトで関数を利用する – Qiita

シェルスクリプトの関数の使い方!一通りまとめ | エンジニアの入り口

シェルスクリプトで関数を作成する方法 | server-memo.net

関数の使用方法 | UNIX & Linux コマンド・シェルスクリプト リファレンス

関数は共通部品になる | @IT

Create and Use Bash Functions | Like Geeks

Functions | Ryan’s Tutorials

What’s the use of parentheses `()` in shell function definition? – Ask Ubuntu

変数のスコープ

  • 関数内で初めて使用した変数であっても、デフォルトではグローバル変数となる。
  • ローカル変数を宣言するには、local コマンドを使用する。

ドキュメント:

local – Bash Builtins | Bash Reference Manual

参考:

変数スコープについてのメモ – Qiita

関数内の変数 – Qiita

グローバル変数とローカル変数の有効範囲を確認 | え〜のう

declare – 変数の local スコープ | ゲンゾウ用ポストイット

local について | いままでのこと

宣言/スコープ/ライフサイクル | やってみる

local コマンドの使い方 | UNIX/Linux の部屋

グローバル変数

参考:

declare – 変数の global スコープ/参照渡し | ゲンゾウ用ポストイット

引数を渡す

参考:

bash の引数 (関数の引数・位置パラメータ) についてのまとめ | それマグで!

Pass arguments into a function – Linux Shell Scripting Tutorial | A Beginner’s handbook

How to pass parameters to function in a bash script? – Unix & Linux Stack Exchange

Passing parameters to a Bash function – Stack Overflow

引数の数

$ function count () { \
  echo "$#"; \
}
$ count "foo" "bar" "baz"
3

参考:

Find Number of Arguments Passed | nixCraft

配列を渡す

参考:

Passing Array to Function in Bash shell – nixCraft Linux/Unix Forum

How to pass an array as function argument? – Ask Ubuntu

参照渡し

渡された外部の変数を書き換えることができる。

$ function say () \
{ \
  local -n ref=$1; \
  ref="bye"; \
}
$ greeting="hello"
$ echo $greeting
hello
$ say greeting
$ echo $greeting
bye

参考:

Passing arguments by reference – Stack Overflow

Call by Reference

参考:

How to use call-by-reference on an argument in a bash function – Unix & Linux Stack Exchange

expand variable in a variable – Stack Overflow

子プロセスに引き継ぐ (export)

指定した関数を export -f コマンドで子プロセスとして起動するシェルに引き継げるようになる。

$ export -f hoge

xargs で関数を使用する場合は、export した上で bash -c コマンドを使用する。

$ ls | xargs bash -c hoge

参考:

xargs で function を呼び出す話。- Qiita

xargs に Bash の function を渡す方法 | wrist blog

Can I “export” functions in Bash? – Unix & Linux Stack Exchange

エイリアスと関数の使い分け

参考:

エイリアスにする? それとも関数にする? – Qiita

エイリアスと関数で幸せになろう – Qiita

まとめ

関数/引数/ローカル変数/戻り値について | ひゃまだの blog

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA