evalを使ったshell functionの戻り値の設定方法
これは便利な使い方と思ったので、メモ
shell 内の function で、文字列は返せません。テクニックとして、echoを使ったり、shell変数とかを使って橋渡したりするのですが、いつもスマートじゃないと思っていました。
そんなとき、evalを使用して文字列を返す方法がありましたので、紹介です。
まずは、コードから。
#!/bin/sh function func() { eval $1='FUNCTIONの戻りとして使用したい' } func test echo $test
これを実行すると、
$ sh test.sh functionの戻りとして使用したい
となります。
evalで、$1が引数の1として展開され、
test='FUNCTIONの戻りとして使用したい'
となり、shell変数testに値を設定していることになる感じです。これは、コードが見やすくなるので、いいアイデアですよね。
参考: