エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【shell】unbound variableを見かけた時の対応3種【745日目】

変数未定義のエラーが発生した

unbound variable

未定義変数が使われているエラーですね。

なんで起こるか

set -u

みたいなのが書かれていたら、変数未定義の場合にエラーが発生する設定にするというものです。

では対応はどうするか

変数チェック

if [ -v "${VAL}" ]

とかでチェックする

チェックして代入

if [ "${VAL:-false}" ]

値がなければfalseにする

php$val ?? falseやるような感覚

一時的にエラー判定を出さないようにする

set +u

これでエラー判定がでなくなる。

ただ、空文字とかが飛んでくるので、それに合わせた対応を。

もしすでに、

if [ -z "${VAL}" ]

とかを見かけていたら、 -zは文字列の長さが0の時の判定なので、
未定義のときには空文字が来るというのを想定していたけど、setの設定をミスったとかの可能性があります。
一時的にエラー判定を出さないようにするのはありなのかもしれない。

あと、必要であれば忘れずに

set -u

で元に戻してあげてください。