Bash-Fehler „ungebundene Variable“, wenn Variablen in einem mehrzeiligen Kommentar referenziert werden (set -u)

Bash-Fehler „ungebundene Variable“, wenn Variablen in einem mehrzeiligen Kommentar referenziert werden (set -u)

Bei mir tritt ein unerwartetes Verhalten auf – der folgende Codeausschnitt schlägt mit der Fehlermeldung „ungebundene Variable“ fehl:

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

Getestet auf:
GNU Bash, Version 4.4.12(1)-Release
GNU Bash, Version 4.2.46(2)-Release

Antwort1

Was Sie definiert haben, set -uist ein erzwungener Abbruch mit einer Fehlermeldung, wenn versucht wird, eine nicht definierte Variable zu verwenden (Der seteingebaute Befehl).

Die Form von here-documents ist gleichbedeutend <<damit EOF, die Wörter darin doppelt zu zitieren, um die Erweiterung der Variablen (Parametererweiterung) durch die Shell zu ermöglichen ( bashin diesem Fall auch abhängig von Befehlssubstitution und arithmetischer Erweiterung). Um die Erweiterung zu vermeiden, setzen Sie den here-String in einfache Anführungszeichen.

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

verwandte Informationen