for цикл с индексами

Как упоминалось в комментарии Deathgrip, вы должны убить родительский процесс sleep, который вы можете найти с некоторыми вариациями ps | grep sleep(ps, имеет много реализаций, поэтому я не буду угадывать, какие именно флаги вам нужно предоставить или какие ваш вывод выглядит так. Проверитьman ps)

Что происходит? Когда вы убиваете sleep, он завершается, но это не влияет на выполнение содержащего скрипта... он просто переходит к следующей строке, и цикл продолжает повторяться. Есть несколько способов изменить скрипт, чтобы убить сон работало. Один из самых простых — сделать это:sleep 5 || exit.

В качестве альтернативы, если вы используете Bash (другие? ), вы можете просто добавить эту строку в начало :set -e. Это говорит Bash о завершении сценария, если какая-либо команда внутри завершается ошибкой (, т.е. возвращает не -нулевой статус ). Но это влияет на все в вашем сценарии и имеет ряд других ловушек, поэтому лучше избегать этого решения. (Вы можете добавить set -eв строку перед сном и отключить с помощью set +eсразу после него, но это становится несколько нелепым, поскольку вы можете просто использовать первое решение, о котором я упоминал.)

0
01.07.2019, 12:48
1 ответ

Переменные не раскрываются внутри фигурных скобок. Попробуйте вместо этого:

start=1;
end=10;

for ((i=$start; i<=$end; i++))
do
    mkdir "$i"
done
0
28.01.2020, 03:30

Теги

Похожие вопросы