Dies ist ein FreeBSD 7.x-System, auf dem GNU Bash Version 4.0 ausgeführt wird.
In Bash kann die set -u
Option eine Shell zwingen, einen Fehler zu drucken, wenn sie auf eine nicht gesetzte Variable stößt, wie folgt:
$ set -u
$ echo $THISISUNSET
-su: THISISUNSET: unbound variable
$ echo $?
1
Es tritt jedoch auch der gleiche Fehler für $ * auf:
$ echo $*
-su: $*: unbound variable
$ echo $?
1
$ echo $@
-su: $@: unbound variable
Das Bash-Handbuch 4.3.1 Das Set Builtin besagt ausdrücklich, dass set -u
$ * und $ @ ignoriert werden:
-u Behandelt nicht gesetzte Variablen und Parameter außer den speziellen Parametern '@' oder '*' als Fehler bei der Parametererweiterung. Eine Fehlermeldung wird in den Standardfehler geschrieben und eine nicht interaktive Shell wird beendet.
Wie kann ich das beheben?