Давайте возьмем простой for loop
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
Точка с запятой AFAIK в скриптах bash заставляет оболочку выполнять текущую команду синхронно и затем переходить к следующей. Нажатие клавиши ввода делает то же самое, за исключением того, что она не позволяет вам ввести следующую команду, немедленно очищая буфер.
Так почему оболочка не может интерпретировать следующую строку
for i in `seq 1 10`; do; echo $i; done
как это на for loop
самом деле работает?
do
.do
. Кроме того, этот ответ объясняет, почему вы должны удалить точку с запятой после `do '.$i
должно быть частью имени файла? Нужны ли двойные кавычки?Точка с запятой после
do
является ошибкой и не должна быть там.Следующее работает правильно:
источник