複数行コメントで変数を参照するときのBash「バインドされていない変数」エラー(set -u)

複数行コメントで変数を参照するときのBash「バインドされていない変数」エラー(set -u)

予期しない動作が発生しました。次のコードスニペットは、「バインド解除された変数」エラーのため失敗します。

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

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

ベストアンサー1

未定義set -u変数(set組み込みコマンド)。

<<here-documents with型は、EOFシェルが変数を拡張(引数拡張)できるように、二重引用符内の単語と同じです(bashこの場合、コマンドの置換と算術拡張の影響も受けます)。拡張を防ぐには、ここで文字列を一重引用符で囲みます。

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

おすすめ記事