シェルスクリプトの変数について、ちょっと試したことを載せます。
#!/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