bash 関数で戻り値を返すには、echo コマンドを使用します。

return コマンドは終了コードである数値(0 - 255)を返します。
他のプログラミング言語と異なるので、注意が必要です。

目次

間違った使い方

return を使用した以下のスクリプト echo_double.sh を作成します。

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 と記載していたところを echo に修正します。

echo_double.sh
#!/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

期待通りの結果になりました。

Reference