著者:大津真
本連載ではシェルスクリプトの書き方をやさしく紹介します。対象とするシェルは、多くのLinuxディストリビューションが標準シェルとして採用する「Bash」です。最終回となる今回は、関数について解説します。
シェルスクリプトマガジン Vol.70は以下のリンク先でご購入できます。
図1 シェルスクリプト「hello1.sh」の内容
1 2 3 4 5 6 7 8 |
#!/bin/bash function hello() { echo "Hello Function" } hello hello hello |
図2 シェルスクリプト「param_test1.sh」の内容
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash function param_test() { echo "\$0: $0" echo "\$1: $1" echo "\$2: $2" echo "\$3: $3" echo "\$4: $4" echo "\$#: $#" echo "\$@: $@" } param_test 春 夏 秋 冬 |
図3 シェルスクリプト「scope1.sh」の内容
1 2 3 4 5 6 7 8 9 |
#!/bin/bash function scope_test() { g1="グローバル" local l1="ローカル" } scope_test echo "g1: $g1" echo "l1: $l1" |
図4 シェルスクリプト「file_test1.sh」の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/bin/bash function check_file() { if [[ -f $1 ]]; then echo "ファイルが存在します" return 0 else echo "$1が見つかりません" return 1 fi } if [[ $# -eq 0 ]]; then echo "引数でファイルを指定してください" exit 1 fi check_file $1 echo "終了ステータス: $?" |
図5 ライブラリファイル「my_lib.sh」の内容
1 2 3 4 5 6 7 8 9 |
function check_file() { if [[ -f $1 ]]; then echo "ファイルが存在します" return 0 else echo "$1が見つかりません" return 1 fi } |
図6 シェルスクリプト「file_test2.sh」の内容
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash source ./my_lib.sh if [[ $# -eq 0 ]]; then echo "引数でファイルを指定してください" exit 1 fi check_file $1 echo "終了ステータス: $?" |
図7 シェルスクリプト「sum_test1.sh」の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash function calc_sum() { sum=0 for n in $(seq $1) do sum=$(expr $sum + $n) done echo $sum } # 引数があるかどうかのチェック if [[ $# -eq 0 ]]; then echo "引数を指定してください" exit 1 fi # 引数が整数値であることを調べる expr $1 + 1 &> /dev/null if [[ $? -ge 2 ]] then echo "整数値を指定してください" exit $? fi # calc_sum関数を呼び出す echo "1から$1までの総和: $(calc_sum $1)" |
図8 シェルスクリプト「test1.sh」の内容
1 2 3 4 5 6 7 8 |
#!/bin/bash num=10 sum=0 for n in $(seq $num) do sum=$(expr $sum + $n) done echo "総和: $sum" |