Ostatnio patrzyłem na kod, który mnie pomylił, ponieważ działa, a nie spodziewałem się, że to zrobi. Kod ogranicza się do tego przykładu
#!/bin/bash
for var;
do
echo "$var"
done
Gdy jest uruchamiany z argumentami wiersza poleceń, drukuje je
$ ./test a b c
a
b
c
To jest (dla mnie) nieoczekiwane. Dlaczego nie powoduje to błędu, ponieważ var
jest niezdefiniowany? Czy stosowanie tego jest uważane za „dobrą praktykę”?
źródło
To jest domyślne zachowanie, tak. Jest to udokumentowane w
help
tegofor
słowa kluczowego:Tak więc, jeśli nie dać mu listę iteracyjne nad, to domyślnie iteracji nad
$@
tablica parametrów pozycyjnych (a
,b
ac
na swoim przykładzie).To zachowanie jest zdefiniowane przez POSIX, więc tak, uważa się je za „dobrą praktykę”.
źródło