в этой лекции мы обсудим операторы if alif и else, которые используются для принятия решений,
что является одной из самых фундаментальных концепций в компьютерном программировании. Это управление
потоком программы в целом, которое позволяет нам иметь логику в наших сценариях и выполнять часть код
только тогда, когда здесь соблюдаются некоторые критерии, если alif и else являются ключевыми словами оболочки bash, а какое-то условие
обычно представляет собой своего рода операцию сравнения, например, например, тестирование, если значение переменной
больше определенного числа или аргумент сценария либо файл, либо каталог, в
основном этот код говорит что-то вроде этого, если первое условие истинно, выполнить только
этот фрагмент кода ниже, если первое условие оценивается как ложное, проверить второе условие,
если второе условие истинно, выполнить только этот блок кода но если это false, выполнить
блок кода, который идет после предложения else или ключевого слова, условия оцениваются
последовательно, как только условие возвращает true, оставшееся условие s больше не вычисляются,
и управление программой перемещается в конец операторов if, поэтому после строки vi обратите внимание, что у вас может
быть только один оператор if, и не обязательно всегда иметь операторы alif или else,
также обратите внимание, что обязательно иметь пробел до и после квадратных скобок,
которые заключают условие тестирования и предложение i в конце, ограничивает весь лист
и структуру программирования dell, она похожа на закрывающую фигурную скобку в других языках программирования,
таких как c или java, перейдем к кодированию и посмотрите несколько примеров.Я создаю сценарий, который
принимает в качестве аргумента обычный файл и отображает контекст, поэтому vim display, что sh
shebang, и сценарий будет иметь только одну строку cat dalaran, он отобразит контекст
первого аргумента сценария это файл, в котором я сохраняю файл, давая ему разрешение на выполнение,
а затем открываю его снова,
я хочу избежать открытия изменения закрытия и последующего запуска скрипта каждый раз, когда я что-то
добавляю или изменяю в скрипте я разделяю терминал по горизонтали
в одном окне у меня есть скрипт, а в другом я запускаю его здесь, в терминале ниже,
я запускаю скрипт, давая ему обычный файл в качестве аргумента, поэтому покажите, что sh
и обычный файл, например мой сценарий, он не отображал содержимое файла
ничего особенного до этого момента, но что произойдет, если вместо того, чтобы указать
существующий файл в качестве аргумента сценарию, мы дадим ему каталог или несуществующий файл
тогда команда cat вернет ошибку, например, я даю ей несуществующий файл, например,
команда cat вернула ошибку или я даю ей каталог,
это плохая другая ошибка, поэтому необходимо какое-то тестирование, я хочу отобразить содержимое
первого аргумента сценария, только если этот аргумент относится к типу обычного файла,
поэтому я добавляю оператор if с условием тестирования здесь, если квадратный разрыв x минус f dalagan
минус f является условием тестирования, которое возвращает истину, если значение что следует обычный файл,
и я продолжаю писать блок кода if, тогда код и fi в конце фрагмент кода
между then и fi будет оцениваться и запускаться только в том случае, если первый доллар имеет тип обычного файла,
и я бы рекомендовал вам использовать отступ, как я сделал, для повышения читабельности, кстати,
если вы хотите увидеть все условия тестирования, которые можно использовать, запустите man test,
чтобы man test, это все условия тестирования, которые можно использовать в операторах if,
и последнее замечание о коде, которым вы являетесь видя, что рекомендуется заключать доллар один
в двойные кавычки, это рекомендуется при работе со строками, и в этом случае
первым аргументом скрипта, который является долларовым, является имя файла или каталога, поэтому
я сохраняю файл и запускаю его снова
я даю ему каталог в качестве аргумента или несуществующий файл
, нет ошибки, потому что комментарий кота не был выполнен,
так как условие тестирования вернуло false, давайте перейдем и добавим второе условие тестирования,
если прошлый аргумент является каталогом, а не f ile, тогда я запускаю ls minus cell на нем,
поэтому я также показываю некоторые сообщения, поэтому аргумент - это файл, отображающий его контекст,
и проскальзываю один, я приостанавливаю скрипт на одну секунду, чтобы у пользователя было достаточно времени, чтобы
нажать сообщение и второе условие лист пустое пространство квадратные скобки
и условие минус даларан это условие для каталогов, в которые
он вернется, если файл существует и является каталогом,
тогда эхо аргумент - это каталог, в котором выполняется ls минус ячейка
ls минус ячейка Даларан и другое положение, если аргумент не является ни файла, ни директории, так еще
эхо аргумент не является ни файла, ни директории
я коплю файл и тестирование сценария, так что я бегу сценарий с файлом в качестве аргумента
будет отображать контекст файла идеально.Я запускаю сценарий
с аргументом каталогов, он должен запускать ls минус ячейка в каталоге отлично, и я запускаю сценарий
с чем-то еще, поэтому аргумент не является ни файлом, ни каталогом, скажем abc the сценарий
рабочий ng, как мы и ожидали, в конце я хочу рассказать вам кое-что об одинарных квадратных скобках
и двойных квадратных скобках. В примерах, показанных в этой лекции, используются одиночные квадратные
скобки для условий тестирования. Это старый классический переносимый тип тестирования.
Есть новая обновленная версия. тестирования, в котором используются двойные квадратные скобки, что
считается более безопасным, поэтому я заменю одиночные квадратные скобки на двойные квадратные скобки, как это, в
основном двойные квадратные скобки предотвращают разделение слов или строковые переменные, содержащие пробелы, и вам не нужно даже
заключать строковые переменные в двойные кавычки хотя это хорошая практика,
двойные квадратные скобки также имеют некоторые другие приятные особенности, такие как сопоставление регулярных выражений,
на данный момент не сосредотачивайтесь на этом слишком сильно, вы можете использовать двойные квадратные скобки, если не знаете,
что делать, этот сценарий работает так же, как и раньше Я сохраняю и тестирую
каталог, в котором файл является аргументом,
и несуществующий файл