web-dev-qa-db-ja.com

複数行コメント(set -u)で変数が参照されている場合のbash 'unbound variable'エラー

予期しない動作があります。次のスニペットは「unbound variable」エラーで失敗します。

#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF

テスト済み:
GNU bash、バージョン4.4.12(1)-release
GNU bash、バージョン4.2.46(2)-release

6
padura

set -uで定義したものは、未定義の変数( The set組み込みコマンド )を使用しようとすると、強制終了してエラーメッセージが表示されます。

Here-documents << with EOFの形式は、変数をシェル(bashこの場合、コマンド置換と算術展開も適用されます)。展開が発生しないようにするには、ヒア文字列を一重引用符で囲みます

set -u
<<'EOF'
a=a
b=$a
EOF
11
Inian