【シェル】一筋縄ではいかない文字列の返却

Pexels sora shimazaki 5935794

関数の戻り値を文字列で返す…。

ごく当たり前の処理だけど、シェルスクリプト(bash)では簡単に書けない。returnで返却できるのは0から255の整数値だけという制限があるからだ。

function hello {
  return 1
}
hello
echo $?

これを解決するためには、関数で標準出力しそれを変数へ格納する方法が有効。引数付きで関数を呼び出し、戻り値を変数に格納するサンプルが掲載されている。

makeName()
{
    echo "$fileName.$1.log"
}


echo -n "Enter fileName:"
read fileName

name1=$(makeName "type1")
name2=$(makeName "type2")

echo $name1
echo $name2

その他、戻り値を格納する変数を渡し、関数側でevalして値を設定するというような方法も掲載されているが、とりあえず上の方法で十分そう。