Для цикла языка c в стиле for следующее выполняется ноль раз:
for (int myvar = 0; myvar <= -3; myvar++) {
printf("hi")
}
bash вместо этого выполнит цикл четыре раза, перейдя на -1
for j in {0..-3}; do echo 'hi'; done
hi
hi
hi
hi
Следующее будет выполнено один раз
for j in {1..4..0}; do echo 'hi'; done
hi
Итак, как избежать выполнения цикла без комментирования всего? Я хотел бы контролировать это с помощью переменных в индексах цикла:
first=0
last=-3
step=1
for j in {$first..$last..$step}; do echo 'hi'; done
hi





for ((j=0; j<=-3; j++)); do
echo hi
done
for ((j=first; j<=last; j+=step)); do
echo hi
done
О, bash имеет цикл в стиле c (хотя и с немного другим синтаксисом)
Первый цикл, который вы опубликовали, фактически приведет к синтаксической ошибке.