Руководство для начинающих

Руководство по написанию сценариев на Bash для начинающих

Руководство по написанию сценариев на Bash для начинающих

Если вы начинаете работать с системами Linux, такие термины, как «Сценарии оболочки» или же «Сценарии Bash»Могут быть довольно распространенными - но что они означают? Прежде чем мы углубимся в подробности, изучение сценариев Bash может помочь вам сэкономить время при выполнении и выполнении различных системных задач, лучше понять командную строку Linux (Терминал) и автоматизировать несколько системных задач.

Что такое Баш?

Баш, аббревиатура от «Bourne-Again-Shell», это оболочка Unix или интерпретатор командного языка для операционной системы GNU. Это была основная оболочка для дистрибутивов Linux и выпусков Apple macOS до macOS Catalina. Bash также доступен для Windows 10 через подсистему Windows для Linux.

Bash обычно запускается в текстовом окне, обычно известном как Терминал, где пользователи вводят команды для выполнения различных задач. Bash также может выполнять команды, записанные в файле, метод, называемый «Сценарии bash.”

Разница между сценариями Bash и сценариями оболочки

Сценарии оболочки и сценарии Bash - это не одно и то же. В сценариях Bash вы явно используете оболочку bash. С другой стороны, сценарий оболочки может быть довольно широким словом, поскольку у нас есть другие оболочки, кроме Bash. Среди наиболее распространенных - Korn (ksh), оболочка C (csh), оболочка Z (zsh) и оболочка Bash (sh). Однако неудивительно, что люди, использующие сценарии bash и сценарии оболочки, взаимозаменяемо означают одно и то же. В нашем посте о 6 лучших оболочках с открытым исходным кодом для Linux дается подробное описание этих оболочек.

В этом посте мы рассмотрим сценарии Bash. По умолчанию многие доступные дистрибутивы Linux используют оболочку Bash. Ознакомьтесь с нашим постом о 6 лучших дистрибутивах Linux для начинающих. Чтобы подтвердить оболочку, которую вы используете в своем текущем дистрибутиве Linux, выполните команду в Терминале.

echo $ SHELL

оболочка

На изображении выше вы можете видеть, что интерпретатор по умолчанию в моей системе - bash. В настоящее время я использую Ubuntu 20.04 LTS. Давай нырнем!

Понимание сценариев Bash

Сценарии Bash - это текстовые файлы, содержащие команды bash, которые выполняются для выполнения различных задач. Для написания этих скриптов вам потребуется только простой текстовый редактор, такой как gedit, Leaf Pad, vim, nano и многие другие. Пожалуйста, не забудьте сохранить свои скрипты с расширение и как обычный текст, а не форматированный текст. Один из моих любимых редакторов, которые я использую для написания скриптов, - это редактор nano.

Именование, назначение разрешений и выполнение сценария Bash

Как объяснено выше, убедитесь, что вы используете .расширение sh для ваших сценариев bash. Например, у вас может быть скрипт с названием fosslinux_backup.ш. Однако было бы лучше, если бы вы осторожно называли свои скрипты. Например, большинству людей нравится сохранять большинство своих скриптов как «тестовые.«Многим неизвестно, что существует встроенная команда Unix под названием test, которая проверяет типы файлов и сравнивает значения. Вы можете использовать команду which, чтобы проверить, существует ли программа с тем же именем, что и у вашего скрипта, чтобы предотвратить любые конфликты программ.

который [команда] e.g который тест

Какая команда

Из вывода выше мы видим, что тест уже является встроенной командой. Поэтому, чтобы избежать конфликтов между программами, я не буду называть свои скрипты как "контрольная работа.”

Чтобы сделать скрипт исполняемым для каждого пользователя, используйте команду ниже:

chmod + x [скрипт.sh]

Чтобы сделать скрипт исполняемым для текущего пользователя, используйте команду ниже:

chmod u + x [скрипт.sh]

Теперь, чтобы запустить скрипт, выполните следующую команду:

./ [имя_сценария]

С помощью описанного выше метода вы поймете, что вам нужно будет использовать CD команда для перехода в каталог, содержащий скрипт, или передать путь к скрипту. Однако есть обходной путь к этому. Сохраните свои скрипты в мусорное ведро каталог, присутствующий в домашнем каталоге.

С последними обновлениями большинство дистрибутивов не поставляются с мусорное ведро папка по умолчанию. Следовательно, вам потребуется создать его вручную. Поместив свои скрипты в эту папку, вы можете запустить скрипт, набрав его имя в Терминале, не используя CD а также ./ команды.

Рекомендации по написанию сценариев Bash

Прежде чем писать свой первый скрипт, есть несколько рекомендаций, которые вам нужно понять при написании скриптов.

В #!/ bin / bash Оператор (Hash-Bang Hack) - это путь к оболочке, которую мы будем использовать. Если вы используете другую оболочку, вам нужно будет отредактировать этот путь. Мы понимаем, что все комментарии начинаются с # символ. Однако, когда за ним следует (!) в Hash-Bang Hack, сценарий принудительно выполняется с оболочкой, на которую указывает эта строка. В нашем случае это оболочка Bash.

Ваш первый сценарий Bash

Как и в большинстве языков программирования, мы напишем сценарий, который печатает "Привет мир" заявление при исполнении. Откройте ваш любимый текстовый редактор и вставьте команды ниже. Сохраните текстовый файл как окаменелость.ш или любое другое имя, не являющееся встроенной командой.

#!/ bin / bash # Этот скрипт напечатает "Hello World" в эхо-запросе терминала "Hello World"

После сохранения файла сделайте его исполняемым, выполнив команду ниже:

chmod + x fossHelloWorld.ш

Теперь запустите его с помощью следующей команды:

./ fossHelloWorld.ш

Первый сценарий

В приведенном выше скрипте всего три строки. Первый - это Hash-Bang Hack, о котором мы говорили выше, второй - комментарий, а третий - команда, которая будет выполняться. Обратите внимание, комментарии никогда не выполняются.

Давайте посмотрим на другие функции сценариев bash, которые вы можете использовать.

Команда эха

Команда Echo используется для печати вывода в командной строке Linux или в Терминале. Если вы разработчик и раньше работали с PHP, вы, должно быть, встречали и эту команду. Напишем небольшой сценарий bash, чтобы продемонстрировать, как работает эта команда.

#!/ bin / bash # Напечатаем первую строку echo "Это Fosslinux.com - с новой строкой "# Давайте напечатаем второй оператор без новой строки echo -n" Это Fosslinux - новой строки нет "

Сохраните свой скрипт, назначьте необходимые разрешения и выполните его.

Bash Echo

Чтобы понять код, первая команда echo печатает оператор и переходит к следующей строке. Вторая команда echo имеет -п аргумент, который не позволяет скрипту перейти к следующей строке. Вы можете использовать множество других параметров с командой Echo, включая переменные, как мы увидим ниже.

Переменные

Переменные - общая и необходимая часть любого языка программирования. Объявлять переменные Bash можно несколькими способами. При присвоении значения какой-либо переменной не нужно использовать какие-либо символы. Однако при вызове значения переменной вам нужно будет использовать $ знак в начале переменной.

Вы можете использовать переменные в Терминале или как скрипты. Выполните приведенные ниже команды на своем Терминале.

myWebsite = "Fosslinux.com "echo $ myWebsite

Использование переменных на терминале

Теперь давайте создадим сценарий bash, который принимает два ввода от пользователя и сохраняет их в переменных $ x а также $ y. Затем скрипт проверит, равны ли два значения или нет.

#!/ bin / bash echo "Введите первое число" прочтите эхо "Введите второе число" прочтите b if [[$ a -eq $ b]] затем echo "Числа равны" else echo "Числа не равны" fi

Сохраните скрипт и запустите его. На изображении ниже вы можете видеть, что мы ввели разные значения, и скрипт смог проверить, равны они или нет.

Переменные Bash

Теперь давайте подробнее рассмотрим код. Первые два оператора эха предлагают пользователю ввести первое и второе числа. В читать команда будет ждать, пока пользователь введет число, и сохранит его в указанной переменной. В нашем случае это а а также б. Затем у нас есть оператор if, который проверяет, равны ли два значения или нет.

Условное заявление

В любом языке программирования условные операторы управляют ходом программы. Часть кода будет выполняться только при выполнении определенного условия. Некоторые из наиболее распространенных условных операторов включают «if-then-else» и «case.»Ниже приведен основной синтаксис оператора if-then-else.

если [[условие]] то  еще  фи

Взгляните на приведенный ниже сценарий, в котором используется условный оператор if-then-else.

#!/ bin / bash echo "Введите свой возраст" прочтите возраст if ((age> 18)) затем echo "Вы можете пойти на вечеринку" else echo "Вы не можете пойти на вечеринку" fi

Условные операторы Bash

Давайте пройдемся по сценарию выше. У нас есть эхо инструкция, предлагающая пользователям ввести возрастной номер. В читать инструкция сохраняет возраст, введенный в переменную «age."Затем у нас есть условное выражение if-then-else, которое проверяет, превышает ли возраст 18 лет, прежде чем давать пользователю указание.

Петли

Циклы обычно используются, когда вы хотите выполнить фрагмент кода несколько раз. Например, если бы я хотел повторить 1000 строк утверждения «Добро пожаловать в Fosslinux», мне потребовалось бы 1000 эхо-операторов. Однако с циклами все, что мне нужно сделать, это указать, сколько раз я хочу, чтобы оператор отображался или печатался на Терминале. Bash поддерживает три типа циклов; Цикл For, цикл while и цикл until. Посмотрим на каждого из них.

Цикл For используется для перебора списка указанных данных или массива. Ниже приведен базовый синтаксис цикла Bash For Loop;

для значения в 1 2 3 4 5… N выполнить инструкцию1 инструкцию2 инструкция-N выполнено

или же,

для ЗНАЧЕНИЯ в файле1 файл2 файл3 выполнить инструкцию1 по $ ЗНАЧЕНИЕ инструкция2 инструкция-N выполнено

Взгляните на сценарий ниже. Он выполняет итерацию по заданным дням недели и выводит их на Терминале построчно.

# Прочитать название дня недели в каждой итерации цикла для дня в понедельник, вторник, среду, четверг, пятницу, субботу, воскресенье, do echo "$ day" done

Сохраним скрипт как ForLoop.ш и выполнить это. Ниже приведен снимок экрана с выводом.

Для петли

Это всего лишь простой пример того, что можно сделать с помощью цикла For Loop. Вы также можете комбинировать его с условными операторами для выполнения конкретной задачи.

Цикл While Loop выполняет определенную задачу, пока определенное условие остается истинным. На каждой итерации цикл сначала проверяет условие перед выполнением инструкций. Если условие равно False, цикл завершится. Базовый синтаксис цикла bash While выглядит следующим образом:

пока [СОСТОЯНИЕ] выполните [КОМАНДЫ] выполненные

Например, у нас может быть скрипт, который будет печатать оператор «Добро пожаловать в FOSSLINUX.COM » 20 раз, пока переменная X не станет равной 20. Попробуем реализовать это на практике. Взгляните на сценарий ниже.

#!/ bin / bash x = 1, а [$ x -le 20] do echo "Добро пожаловать в FOSSLINUX.COM "x = $ (($ x + 1)) выполнено

Сохраним скрипт как WhileLoop.ш и выполнить это. Ниже приведен снимок экрана с выводом.

Пока цикл

Давайте посмотрим на скрипт While Loop выше. Сначала мы объявляем переменную X, давая ей значение 1. Затем мы создаем оператор While, который выводит выражение «Добро пожаловать в FOSSLINUX.COM », а X меньше 20. Наконец, мы увеличиваем X на единицу после каждой итерации.

Циклы Bash until используются для выполнения набора инструкций или команд, пока заданное условие оценивается как ложное. Ниже приведен базовый синтаксис цикла «Пока».

пока [СОСТОЯНИЕ] выполните [УКАЗАНИЯ / КОМАНДЫ] выполненные

Подобно циклу «Пока», цикл «пока» сначала оценивает установленное условие перед выполнением инструкций или команд. Если условие оценивается как ложное, инструкции выполняются. Цикл завершается, когда условие оценивается как истинное. Взгляните на пример ниже.

#!/ bin / bash count = 0 до [$ count -gt 5] do echo Counter: $ count ((count ++)) done

После сохранения и запуска приведенного выше сценария мы получаем следующий результат:

До цикла

Приведенные выше сценарии сначала создают счетчик переменных и устанавливают его равным нулю (0). Это условие, которое контролирует ход нашей программы. Цикл «Пока» проверяет, больше ли значение счетчика 5. Если это не так, он напечатает переданные инструкции. Однако, если значение больше 5, цикл немедленно завершится. Наконец, мы увеличиваем значение счетчика на 1 (счет ++).

Функции Bash

В программировании и написании сценариев функции используются для хранения многоразового фрагмента кода, необходимого для выполнения конкретной задачи. Следовательно, если у вас есть похожие команды, которые вы хотите выполнить в разных частях вашего скрипта, вам не нужно повторно писать эти команды. Включите их в функцию и вместо этого выполните функцию.
Ниже приведен базовый синтаксис функции Bash.

function_name ()    

или же,

function function_name    

Давайте создадим простой скрипт, который использует функции. Сначала мы создаем функцию под названием «myFunction», которая при вызове выводит выражение «Здравствуйте, я первая функция». Вторая функция, myCities, немного продвинута, поскольку принимает переданные аргументы. Аргументы даются после вызова имени функции. Они доступны в функции как $ 1.

#!/ bin / bash myFunction () echo "Здравствуйте, я первая функция" echo "Здравствуйте, я первая функция" echo echo "Это вторая функция" function myCities () echo Hello $ 1 myFunction myCities Washington, D.C myCities Phoenix

После сохранения и выполнения скрипта мы получаем вывод ниже.

Функции

Меню Bash

При написании сценария для выполнения расширенной задачи может потребоваться, чтобы пользователь выбрал один вариант из нескольких вариантов, отображаемых в Терминале. Для этого мы будем использовать bash Выбрать команда.

Он создает простой скрипт меню, который предложит пользователям выбрать свои любимые дистрибутивы Linux из списка. Взгляните на сценарий ниже.

#!/ bin / bash # Распечатать сообщение для пользователя echo "Выберите ваш любимый дистрибутив Linux" выберите дистрибутив в Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali do # Распечатать выбранное значение if [[$ distro == "Exit"]] затем выйти 0 иначе echo "Выбранный дистрибутив Linux - $ distro" fi готово

Сохраним скрипт как меню.sh и выполните это. Получаем результат ниже.

Меню Bash

В приведенном выше скрипте у нас есть список дистрибутивов Seven Linux, из которых пользователь выберет один. После того, как они сделают выбор, он сохраняется в переменной дистрибутив а затем напечатаны путем объединения его со строкой «Выбранный дистрибутив Linux.” Меню выбора в Bash могут быть весьма полезными, особенно когда у вас есть несколько скриптов, выполняющих разные задачи, и нужно выбрать тот, который они хотят выполнить.

Арифметика

Каждый язык программирования поддерживает выполнение арифметических операций, и сценарии bash не исключение. Однако то, как мы выполняем арифметические операции, немного отличается. Ниже приведен один из способов выполнения арифметических операций в bash. Мы рассмотрим четыре типа арифметических операций - сумма, деление и умножение.

#!/ bin / bash # Вычислить результат суммы = $ ((70 + 15)) # Вывести значение суммы echo "sum = $ result" # Вычислить результат деления = $ ((100/25)) # Вывести значение деления echo "div = $ result "#Calculate Multiplication result = $ ((15 * 15)) echo" Умножение = $ result "

Сохраним приведенный выше скрипт как арифметический.sh и выполните это. Получаем результат ниже.

Арифметика

Заключение

Это полное руководство для начинающих по началу работы со сценариями Bash. Однако Bash - это не только то, что описано в этом руководстве. Одно из мест, где я бы порекомендовал улучшить свои навыки, - это Справочное руководство GNU Bash. Если у вас возникнут какие-либо проблемы или вы прокомментируете этот пост, не стесняйтесь оставлять комментарии ниже.

Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...