Я не знаю, какова первоначальная причина такого синтаксиса, но давайте учтем тот факт, что while
циклы могут принимать несколько команд в разделе условий, например.
while a=$(somecmd);
[ -n "$a" ];
do
echo "$a"
done
Здесь ключевое слово do
необходимо, чтобы отличить раздел условия от основной части цикла. do
— это ключевое слово, подобное while
, if
,then
(и done
), и похоже, что оно соответствует другим тем, что не требует точки с запятой или новой строки после него, но появляется непосредственно перед команда.
Альтернатива (, обобщенная на if
и while
), выглядела бы несколько уродливо, нам нужно было бы написать, например,.
if; [ -n "$a" ]; then
some command here
fi
Синтаксис циклов for
аналогичен.