著者:大津真
本連載ではシェルスクリプトの書き方をやさしく紹介します。対象とするシェルは、多くのLinuxディストリビューションが標準シェルとして採用する「Bash」です。最終回となる今回は、関数について解説します。
シェルスクリプトマガジン Vol.70は以下のリンク先でご購入できます。![]()
![]()
図1 シェルスクリプト「hello1.sh」の内容
#!/bin/bash
function hello() {
echo "Hello Function"
}
hello
hello
hello
図2 シェルスクリプト「param_test1.sh」の内容
#!/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」の内容
#!/bin/bash
function scope_test() {
g1="グローバル"
local l1="ローカル"
}
scope_test
echo "g1: $g1"
echo "l1: $l1"
図4 シェルスクリプト「file_test1.sh」の内容
#!/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」の内容
function check_file() {
if [[ -f $1 ]]; then
echo "ファイルが存在します"
return 0
else
echo "$1が見つかりません"
return 1
fi
}
図6 シェルスクリプト「file_test2.sh」の内容
#!/bin/bash
source ./my_lib.sh
if [[ $# -eq 0 ]]; then
echo "引数でファイルを指定してください"
exit 1
fi
check_file $1
echo "終了ステータス: $?"
図7 シェルスクリプト「sum_test1.sh」の内容
#!/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」の内容
#!/bin/bash
num=10
sum=0
for n in $(seq $num)
do
sum=$(expr $sum + $n)
done
echo "総和: $sum"