シェルスクリプトの関数で戻り値を使う

return で値を返す場合、単純な数値(つまりリターンコード)しか返せないらしい。
文字列等を返す一つの方法は、echo を使うこと。

hoge()
{
echo "hoge"
}

val=`hoge`

この場合、hoge関数でエラーメッセージ等を出したい場合は、標準エラー出力を使うこと。標準出力に出してしまうと、全て戻り値として扱われてしまう。

hoge()
{
echo "hoge"
ret=$?
if [ ret -ne 0 ]; then
echo "error" >&2
exit 1
fi
}