予期しない動作があります。次のスニペットは「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
set -u
で定義したものは、未定義の変数( The set
組み込みコマンド )を使用しようとすると、強制終了してエラーメッセージが表示されます。
Here-documents <<
with EOF
の形式は、変数をシェル(bash
この場合、コマンド置換と算術展開も適用されます)。展開が発生しないようにするには、ヒア文字列を一重引用符で囲みます
set -u
<<'EOF'
a=a
b=$a
EOF