Weźmy prosty for loop
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
Średnik AFAIK w skryptach bash powoduje, że powłoka wykonuje bieżące polecenie synchronicznie, a następnie przechodzi do następnego. Naciśnięcie klawisza Enter robi dosłownie to samo, z wyjątkiem tego, że nie pozwala na wprowadzenie następującego polecenia, natychmiast opróżniając bufor.
Dlaczego więc shell nie może zinterpretować następującego wiersza
for i in `seq 1 10`; do; echo $i; done
jak to for loop
właściwie działa?
do
.do
. Ponadto ta odpowiedź wyjaśnia, dlaczego należy usunąć średnik po `do '.$i
musi być częścią nazwy pliku? Czy potrzebuje podwójnych cudzysłowów?Średnik po
do
jest błędem i nie powinien tam być.Następujące działa poprawnie:
źródło