🔍
𝕏📘📖☁️

シェルスクリプトの関数から戻り値を返す方法 🐚

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 は数値のみを受け取るため、文字列を渡すとエラーになります 😵

正しい使い方

returnecho に修正します:

#!/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 スクリプトをより効果的に書くことができます 🚀

参考文献

関連記事