シェルスクリプトの変数について、ちょっと試したことを載せます。
#!/bin/bash val1=val1 function test1() { echo $val1 echo $val2 echo $val3 } val2=val2 test1 val3=val3
function の前後に定義した値がどこまで取得できるのかを試してみました。
結果はこちら。関数の呼び出し前までに宣言された変数が参照可能なようです。なるほど。
❯ ./test.sh val1 val2
trap の場合
#!/bin/bash val1=val1 function test1() { echo $val1 echo $val2 echo $val3 } function _catch () { echo catch: $val1 echo catch: $val2 echo catch: $val3 exit 0 } trap _catch EXIT val2=val2 test1 val3=val3
今度はすべての変数が出力されました。 変数がすでにメモリに格納された状態で関数が実行されたからですかね。
❯ ./test.sh val1 val2 catch: val1 catch: val2 catch: val3