Ich habe mir kürzlich einen Code angesehen, der mich verwirrt hat, weil er funktioniert und ich nicht damit gerechnet habe. Der Code reduziert sich auf dieses Beispiel
#!/bin/bash
for var;
do
echo "$var"
done
Wenn mit Kommandozeilenargumenten ausgeführt wird, werden diese gedruckt
$ ./test a b c
a
b
c
Das ist (für mich) unerwartet. Warum führt dies nicht zu einem Fehler, da var
undefiniert? Wird diese Vorgehensweise als "gute Praxis" angesehen?
quelle
Dies ist das Standardverhalten, ja. Es ist im
help
desfor
Schlüsselworts dokumentiert :Also, wenn Sie es nicht , eine Liste zu iterieren übergeben, wird es zu iterieren Standard
$@
, wobei die Anordnung von Positionsparametern (a
,b
undc
in Ihrem Beispiel).Und dieses Verhalten wird von POSIX definiert, also wird es, soweit dies möglich ist, als "gute Praxis" angesehen.
quelle