■ Hello World
* まず、以下に「Hello World」的なサンプルを記す
サンプル
#!/bin/bash sample_function () { echo "Hello World!" } sample_function
■ 構文
関数本体
【関数名】() { # 処理 }
関数呼び出し
() はいらない
【関数名】
■ 関数の引数
* 関数内では、シェルスクリプトと同様に 変数「$1 ~ $n」で各引数を参照することが可能
サンプル
* まず、「Hello World」的なものを提示する(「SayHello.sh」で保存)
SayHello.sh
#!/bin/bash sample_function2 () { echo "Hello World, $1!" } echo How are you? $1! sample_function2 $2
出力例
> SayHello.sh Mike Tom How are you? Mike! Hello World, Tom!
■ 関数の戻り値
* 関数の戻り値は存在しない(※以下の「注意」を参照) * 一般的に、以下の参考文献に 書かれている「関数内で echo する」方法がとられる
http://www.d-wood.com/blog/2014/09/24_6873.html
サンプル
例1
#!/bin/bash sample_function3 () { echo "Hello World!" } result=`sample_function3` echo $result
例2
https://dk521123.hatenablog.com/entry/2020/09/01/000000
# より抜粋 prod=`is_prod ${env}` echo "Prod = ${prod}"
注意
* return コマンドは、存在するが、 関数の終了ステータスとなるので、 関数の戻り値としては使用できない
■ 別シェルの関数を呼ぶ
https://www.searchman.info/tips/3180.html
を参考に実装。
サンプル
main.sh
#!/bin/bash . ./sub.sh result=$(sub 'Mike') echo "return code : ${?}" echo "result : ${result}"
sub.sh
#!/bin/bash sub(){ name=${1} echo "Hello World, ${name}!" exit 0 }
出力結果
$ ./main.sh return code : 0 result : Hello World, Mike!
参考文献
http://capm-network.com/?tag=%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E9%96%A2%E6%95%B0
http://shellscript.sunone.me/function.html
関連記事
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ 基本編・構文全般 ~
https://dk521123.hatenablog.com/entry/2015/02/20/001600
シェル ~ 基本編・条件分岐 if / case ~
https://dk521123.hatenablog.com/entry/2015/05/01/000043
シェル ~ 基本編・引数あれこれ ~
https://dk521123.hatenablog.com/entry/2021/07/11/000421
シェルで部分一致(前方一致・後方一致)
https://dk521123.hatenablog.com/entry/2020/09/01/000000
シェル ~ 非同期 ~
https://dk521123.hatenablog.com/entry/2023/06/01/000000