|
Часть вторая Это мини-учебник программирование в Колотить, где мы учимся использовать циклы и другие инструменты, которые помогут нам улучшить функциональность наших скрипты. |
Условное условие If
Функция If заключается в применении фильтра и выполнении операции или задачи для каждого типа примененного фильтра. Его структура следующая:
Если [условие]; затем команды elif [условие]; затем команды else; команды fi
Пример показан рядом с циклом For в соответствующем разделе.
Циклы
1. Пока: он будет выполнять все команды, указанные между do и done, пока выполняется условие. Если мы хотим передать ему операторы сравнения, выражение должно быть в скобках.
в то время как CONDITION / COMMAND выполняет команды
Пример: таблица умножения числа
#! / bin / bash X = 1 echo "Введите число и нажмите ENTER" read M # Цикл определяет, что X меньше или равно 10, а [$ X –le 10] do # В R мы сохраняем умножение X на MR = $ [X * M] # Это умножение выводится на экран echo "$ M * $ X = $ R" # С let мы увеличиваем значение X на 1 единицу let X = $ X + 1 done
2. For: хранит список элементов в переменной, которые будут использоваться для выполнения определенных операций с каждым циклом.
для ПЕРЕМЕННОЙ в ЭЛЕМЕНТАХ выполняйте команды
Пример: программа, которая копирует файл из одной папки в другую, заменяя старый файл.
# / bin / bash # Мы устанавливаем исходный и целевой каталоги ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Мы позиционируем себя в исходном cd $ ORIGIN # Из всех файлов нам нужен только тот, который # вызовите FILE для FILE в * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f фильтрует обычные файлы, # поскольку каталоги для нас бесполезны. –Nt отфильтровывает # файлов «новее», чем # найденные в папке назначения, если [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; затем echo "Copying $ FILE ..." # копируем файл с помощью cp cp $ FILE $ ARCH-DESTINATION fi done # Мы cd для выхода из исходной папки cd
Другой пример: сценарий, в котором пользователь должен угадать случайное число, сгенерированное компьютером.
# / bin / bash # Генерируется случайное число от 1 до 10, оно # сохраняется в RANDOM RANDOM = $ [$ RANDOM% 10 + 1], а [1] do echo –n "Введите число:" прочтите NUM # Сравните, если выбранное пользователем число # равно СЛУЧАЙНОМУ; не забудьте использовать $ для оценки # значений переменных, а не их имен if [«$ NUM –eq« $ RANDOM »]; затем эхо "Вы поняли!" #break позволяет завершить цикл при остановке # Если число меньше RANDOM elif [«$ NUM –gt« $ RANDOM »]; then echo "Это меньше" "Если нет, то больше, чем RANDOM else echo" IS больше "fi done
3. До: очень похожа по структуре на While, за исключением того, что код всегда выполняется, пока оценка условия отрицательна, то есть программа продолжает выполнение «до тех пор, пока не произойдет условие».
пока УСЛОВИЕ / КОМАНДА не выполнят команды
Пример: выведите числа 10-20 в порядке убывания
#! / bin / bash CONT = 20 # Пока счетчик меньше 10 (-lt, «меньше # чем»), код выполняется до [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT вычитается на единицу let CONT- = 1 done
4. Выбор: этот последний цикл - особый случай, поскольку он обычно используется для быстрого создания меню. Он работает аналогично циклу For.
выберите ПЕРЕМЕННАЯ в СПИСКЕ выполненных команд
Пример: дать пользователю возможность продолжить или завершить сценарий.
#! / bin / bash #item - это переменная, которая реагирует на то, что # выбирает пользователь, Continue и Finish - это доступные ему # опции, хотя могут быть добавлены другие опции # more select item in Continue Finish do # Если пользователь выбирает завершаем программу, затем с перерывом выходим из цикла. если [$ item = "Готово"]; тогда перерыв готов