シェルスクリプトの関数から戻り値を返す方法 🐚
Bash の関数で戻り値を返す方法について解説します 🐚 他のプログラミング言語とは異なる点があるため、注意が必要です。
基本的な考え方
Bash 関数で戻り値を返すには、echo コマンドを使用します ✅
return コマンドは終了コード(0-255の数値)を返すためのものであり、文字列や値を返すためのものではありません ⚠️
間違った使い方
return を使用した以下のスクリプト echo_double.sh を作成してみます:
#!/usr/bin/env bash
test1(){
return "hoge"
}
test2(){
return "fuga"
}
echo_double(){
echo $1 $2
}
echo_double $(test1) $(test2)
これを実行すると以下のようなエラーが発生します:
$ bash echo_double.sh
test.sh: line 4: return: hoge: numeric argument required
test.sh: line 9: return: fuga: numeric argument required
return は数値のみを受け取るため、文字列を渡すとエラーになります 😵
正しい使い方
return を echo に修正します:
#!/usr/bin/env bash
test1(){
echo "hoge"
}
test2(){
echo "fuga"
}
echo_double(){
echo $1 $2
}
echo_double $(test1) $(test2)
実行結果:
$ bash echo_double.sh
hoge fuga
期待通りの結果が得られました ✨
return コマンドの正しい使い方
return コマンドは関数の終了コードを設定する際に使用します:
#!/usr/bin/env bash
check_file(){
if [ -f "$1" ]; then
return 0 # 成功
else
return 1 # 失敗
fi
}
# 使用例
if check_file "test.txt"; then
echo "ファイルが存在します"
else
echo "ファイルが存在しません"
fi
まとめ
- 戻り値を返す:
echoを使用 📤 - 終了コードを設定:
returnを使用 🔢 - 他の言語の
returnとは動作が異なることに注意 💡
この違いを理解することで、Bash スクリプトをより効果的に書くことができます 🚀