Как создать скрипт в Linux

Обновлено: 02.07.2024

Когда мы начинаем изучать интерфейс командной строки, мы обычно изучаем и изучаем его интерактивно. То есть мы вводим по одной команде за раз, чтобы видеть результаты каждой команды.

Вот GIF-ка, на которой я использую командную строку для изучения каталога шекспировских пьес, подсчитывая количество слов и количество раз, когда встречается слово «убийство» как в «Короле Лире», так и во всех пьесах Шекспира:< /p>

Использование интерфейса командной строки в такой интерактивной манере — это хорошо, когда вы пробуете что-то новое. Однако, как вы, вероятно, заметили, набор текста очень подвержен ошибкам. Таким образом, для сложных задач, которые мы хотим повторить, лучше всего не переписывать их код с самого начала, а создать автономный сценарий оболочки, который можно запустить как однострочник.

Наш первый сценарий оболочки

Начнем с простого. Создайте где-нибудь ненужный каталог, например, /tmp/my-playground, и перейдите в него — нам не нужно засорять наше фактическое рабочее пространство тестовым кодом.

Сценарий оболочки — это не более чем текстовый файл, что имеет смысл, поскольку все наши сценарии командной строки до сих пор были текстом.

Давайте воспользуемся текстовым редактором nano для создания сценария оболочки с именем hello.sh . Выполните следующие действия:

nano должен открыться и предоставить вам пустой файл для работы. Введите команду оболочки:

Запустите сценарий hello.sh с помощью этой команды:

Вот как шаги выглядят в формате GIF:

Поэтому hello.sh не очень впечатляет, но он отражает суть того, что мы хотим сделать: заключить ряд команд в файл, т. е. скрипт, чтобы мы могли -запускаем этот скрипт столько раз, сколько нам нужно.

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

Повторно используемый сценарий оболочки с аргументами

Давайте усложним hello.sh. Вместо того, чтобы просто повторять Hello world , давайте разработаем сценарий так, чтобы он говорил Hello определенному значению (например, чьему-то имени). И мы сделаем сценарий более захватывающим.

Вот предлагаемое использование:

А вот GIF:

Прежде всего, как настроить эхо "Hello world"? Заменив мир переменной. Давайте попробуем интерактивно из командной строки:

Итак, возникает вопрос: как заставить скрипт hello.sh читать аргумент (в данном случае чье-то имя), который мы ему передаем?

Мы делаем это с помощью специальной переменной в bash. Переменные $1 , $2 , $3 (и т. д.) относятся к первому, второму и третьему аргументам, переданным в скрипт из командной строки.

Таким образом, в приведенном выше примере Джордж будет сохранен в переменной $1 при запуске hello.sh.

Заново откройте hello.sh с помощью nano и измените код на этот:

Сохраните изменения и запустите bash hello.sh Mary, чтобы посмотреть, как изменится вывод.

Хотите, чтобы результат выводился заглавными буквами? Затем измените hello.sh следующим образом, направив вывод через tr, чтобы заменить строчные буквы на прописные:

И если вы хотите быть кратким, вы, вероятно, заметили, что переменная $yourname на самом деле не нужна. Код можно упростить до такого:

Заключение

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

Значит, вы уже усвоили основную концепцию. По крайней мере, вы изучили метод, с помощью которого программисты засовывают кучу сложного в "контейнер", который любой другой может запустить в одной строке.

В следующем уроке из этой серии я использовал ту же идею, за исключением того, что я более подробно остановился на том, чтобы сделать сценарий "повторно используемым". Вам вам нужно создать многоразовый скрипт прямо сейчас? Вы вообще знаете, что такое "многоразовый"? Если нет, то вам пока не нужно читать это руководство.

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

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

1. Создайте простой сценарий оболочки

Сценарий оболочки — это файл, содержащий текст ASCII. Мы начнем с создания простого сценария оболочки, и для этого мы будем использовать текстовый редактор. Существует довольно много текстовых редакторов, как с командной строкой, так и с графическим интерфейсом. В этом руководстве мы будем использовать редактор vim.

Мы начнем с создания простого скрипта, который при выполнении отображает «Hello world».

Вставьте следующее содержимое в файл и сохраните.

Давайте рассмотрим сценарий оболочки построчно.

Следующий шаг — сделать скрипт исполняемым, назначив разрешение на выполнение с помощью команды chmod, как показано.

Наконец, запустите сценарий оболочки с помощью любой из команд:

 Создать сценарий оболочки Hello World

2. Использование условных операторов для выполнения кода

Как и в других языках программирования, условные операторы используются в сценариях bash для принятия решений с небольшим изменением синтаксиса. Мы рассмотрим условные операторы if, if-else и elif.

Пример только оператора if

Инструкцию if можно использовать для проверки одного или нескольких условий. Мы начнем с фундаментального использования оператора if для проверки одного условия. Оператор if определяется оператором if . фи блокирует.

Давайте взглянем на приведенный ниже сценарий оболочки.

Приведенный выше сценарий оболочки предлагает пользователю ввести оценку, которая затем сохраняется в переменной x. Если оценка соответствует 70, скрипт возвращает вывод «Хорошая работа!». Оператор сравнения == используется для проверки того, эквивалентна ли введенная оценка, которая хранится в переменной x, 100.

оператор if в сценарии оболочки

Другие операторы сравнения, которые вы можете использовать, включают:

  • -eq — равно
  • -ne — не равно
  • -lt – Меньше чем
  • -le — меньше или равно
  • -lt – Меньше чем
  • -ge — больше или равно

Например, приведенный ниже блок операторов if выводит «Работай усерднее», если входная оценка меньше 50.

 Оператор if в сценарии оболочки

Пример оператора if-else

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

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

Если оценка больше или равна 70, вы получите сообщение "Отличная работа, вы прошли!". Однако, если оценка упадет ниже 70, будет напечатан вывод «Вы потерпели неудачу».

if-else заявление в сценарии оболочки

Пример оператора if-elif-else

В сценариях с несколькими условиями и разными результатами используется оператор if-elif-else. Этот оператор имеет следующий формат.

Например, у нас есть скрипт для лотереи, который проверяет, является ли введенное число 90, 60 или 30.

оператор if-elif-else

3. Использование оператора If с логикой AND

Вы можете использовать оператор if вместе с логическим оператором AND для выполнения задачи, если выполняются два условия. Оператор && используется для обозначения логики И.

5. Использование оператора If с логикой ИЛИ

При использовании логики ИЛИ это представляется как || символ, для получения ожидаемых результатов скрипт должен выполнить одно из условий.

 Оператор If с логикой ИЛИ

Использовать циклические конструкции

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

Пока цикл

Это один из самых простых циклов для работы. Синтаксис довольно прост:

Цикл while ниже выводит список всех чисел от 1 до 10 при выполнении.

Давайте обсудим цикл while:

Счетчик переменных инициализируется равным 1. Пока переменная меньше или равна 10, значение счетчика будет увеличиваться до тех пор, пока условие не будет выполнено. Строка echo $counter выводит все числа от 1 до 10.

While loop в сценарии оболочки

Цикл for

Как и цикл while, цикл for используется для итеративного выполнения кода. т.е. повторять выполнение кода столько раз, сколько возможно, заданное пользователем.

Цикл for ниже выполняет итерацию от 1 до 10 и обрабатывает их значения на экране.

For loop in Shell Script

Лучший способ добиться этого — определить диапазон с помощью двойных фигурных скобок < >, как показано, вместо того, чтобы вводить все числа.

Позиционные параметры Bash

Позиционный параметр — это специальная переменная, на которую ссылается скрипт, когда значения передаются в оболочке, но не могут быть назначены. Позиционные параметры варьируются от $0 $1 $2 $3 …… до $9. Помимо значения $9, параметры должны быть заключены в фигурные скобки, например $, $ … и т. д.

При выполнении сценария первый позиционный параметр, равный $0, принимает имя сценария оболочки. Параметр $1 принимает первую переменную, переданную терминалу, $2 — вторую, $3 — третью и так далее.

Давайте создадим скрипт test.sh, как показано.

Затем выполните скрипт и укажите в качестве аргументов первое и второе имя:

Позиционный параметр Bash

Из вывода видно, что первая печатаемая переменная — это имя сценария оболочки, в данном случае test.sh. После этого имена распечатываются в соответствии с позиционными параметрами, определенными в сценарии оболочки.

Позиционные параметры полезны тем, что помогают настраивать вводимые данные вместо явного присвоения значения переменной.

Коды выхода команд оболочки

Давайте начнем с ответа на простой вопрос: что такое код выхода?

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

Статус выхода 0 означает, что команда выполнена успешно без каких-либо ошибок. Любое значение от 1 до 255 указывает на то, что команда завершилась неудачно или не была выполнена успешно.

Чтобы найти статус завершения команды, используйте ключ $? Переменная оболочки.

Статус выхода 1 указывает на общую ошибку или любые недопустимые ошибки, такие как редактирование файлов без разрешений sudo.

Статус выхода 2 указывает на неправильное использование команды или встроенной переменной оболочки.

Статус выхода 127 указывает на недопустимую команду, которая обычно приводит к ошибке «команда не найдена».

Найти выход Статус команды

Обработка вывода команд оболочки в сценарии

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

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

 Печать даты с помощью сценария оболочки

Возьмем другой пример. Предположим, вы хотите найти действительных пользователей для входа в вашу систему Linux. Как бы вы это сделали? Во-первых, список всех пользователей (как системных, так и пользователей, вошедших в систему) хранится в файле /etc/passwd.

Для просмотра файла необходимо использовать команду cat. Однако, чтобы сузить список пользователей, вошедших в систему, используйте команду grep для поиска пользователей с атрибутом /bin/bash и используйте команду cut -c 1-10, как показано, для отображения первых 10 символов имен.

Мы сохранили команду cat в переменной login_users.

Список зарегистрированных в разделе

На этом наше руководство по созданию простых сценариев оболочки подходит к концу. Мы надеемся, что вы нашли это полезным.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Поддержите нас

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

SSH вход без пароля

Разрыв и Заявления о продолжении

Использовать до цикла в Ваши сценарии оболочки

Читать файл в Linux

 Используйте Heredoc в сценариях Bash

 Получение файла в сценарии оболочки

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

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

  1. Написать сценарий
  2. Дайте оболочке разрешение на ее выполнение
  3. Поместите его туда, где оболочка сможет его найти.

Написание сценария

Сценарий оболочки — это файл, содержащий текст ASCII. Чтобы создать сценарий оболочки, мы используем текстовый редактор. Текстовый редактор — это программа, похожая на текстовый процессор, которая читает и записывает текстовые файлы ASCII. Для систем Linux доступно множество текстовых редакторов, как для командной строки, так и для сред с графическим интерфейсом. Вот список некоторых распространенных:

Имя Описание Интерфейс
vi, vim Дедушка текстовых редакторов Unix, vi, печально известен своим бестолковым пользовательским интерфейсом. С другой стороны, vi мощный, легкий и быстрый. Изучение vi — это обряд посвящения в Unix, поскольку он повсеместно доступен в Unix-подобных системах. В большинстве дистрибутивов Linux вместо vi предоставляется расширенная версия vi, называемая vim. vim — замечательный редактор, и стоит потратить время на его изучение. командная строка
Emacs Настоящий гигант в мир текстовых редакторов — это Emacs, изначально написанный Ричардом Столменом. Emacs содержит (или может содержать) все функции, когда-либо придуманные для текстового редактора. Следует отметить, что поклонники vi и Emacs ведут ожесточенные религиозные войны по поводу того, что лучше. командная строка
nano nano является бесплатным клоном текстового редактора, поставляемого с почтовой программой pine. nano очень прост в использовании, но у него очень мало возможностей по сравнению с vim и emacs. nano рекомендуется для начинающих пользователей, которым нужен редактор командной строки. командная строка
gedit gedit — это редактор поставляется с окружением рабочего стола GNOME. gedit прост в использовании и содержит достаточно функций, чтобы стать хорошим редактором для начинающих. графический
kwrite kwrite is «расширенный редактор», поставляемый с KDE. Он имеет подсветку синтаксиса, полезную функцию для программистов и сценаристов. graphical

Давайте запустим наш текстовый редактор и напечатаем наш первый скрипт следующим образом:

Умные читатели поймут, как копировать и вставлять текст в текстовый редактор ;-)

Это традиционная программа "Hello World". Формы этой программы появляются в почти вводной книге по программированию. Мы сохраним файл с описательным именем. Как насчет hello_world ?

Первая строка скрипта важна. Это специальная конструкция, называемая шебанг, предоставляемая системе и указывающая, какая программа должна использоваться для интерпретации сценария. В данном случае /bin/bash. Другие языки сценариев, такие как Perl, awk, tcl, Tk и python, также используют этот механизм.

Настройка разрешений

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

"755" даст нам разрешение на чтение, запись и выполнение. Все остальные получат только разрешение на чтение и выполнение. Чтобы сделать скрипт приватным (т. е. только мы можем его читать и выполнять), используйте вместо него "700".

На нашем пути

С этого момента будет запущен наш скрипт. Попробуйте это:

Мы должны увидеть "Hello World!" отображается.

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

Ну, это правильно. Оболочка знает.Вот как: оболочка поддерживает список каталогов, в которых хранятся исполняемые файлы (программы), и ищет каталоги только в этом списке. Если он не найдет программу после поиска в каждом каталоге в списке, он выдаст знаменитое сообщение об ошибке «Команда не найдена».

Этот список каталогов называется нашим путем. Мы можем просмотреть список каталогов с помощью следующей команды:

Это вернет список каталогов, разделенных двоеточиями, в которых будет производиться поиск, если при вводе команды не указан конкретный путь. В нашей первой попытке выполнить наш новый скрипт мы указали путь к файлу ("./").

Мы можем добавить каталоги к нашему пути с помощью следующей команды, где directory — это имя каталога, который мы хотим добавить:

Лучше было бы отредактировать наш файл .bash_profile, включив указанную выше команду. Таким образом, это будет выполняться автоматически при каждом входе в систему.

В большинстве дистрибутивов Linux поощряется практика, при которой у каждого пользователя есть отдельный каталог для программ, которые он/она использует лично. Этот каталог называется bin и является подкаталогом нашего домашнего каталога. Если у нас его еще нет, мы можем создать его с помощью следующей команды:

Если мы переместим наш скрипт в новый каталог bin, все будет готово. Теперь нам просто нужно ввести:

и наш скрипт запустится. В некоторых дистрибутивах, особенно в Ubuntu (и других дистрибутивах на основе Debian), нам потребуется открыть новый сеанс терминала, прежде чем наш вновь созданный каталог bin будет распознан.

© 2000-2022, William E. Shotts, Jr. Дословное копирование и распространение всей этой статьи разрешено на любом носителе при условии сохранения этого уведомления об авторских правах.

Как создать сценарий оболочки в Linux

Вы хотите создать сценарий оболочки в своей системе Linux?

В этом руководстве рассказывается, как создать сценарий оболочки с помощью нескольких текстовых редакторов, как добавить комментарии и как использовать переменные оболочки.

Но прежде чем перейти к созданию сценария оболочки, давайте разберемся, что такое сценарии оболочки в Linux.

Что такое сценарии оболочки в Linux?

Итак, что такое сценарии Shell?

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

Длинные и повторяющиеся команды обычно объединяются в простой командный сценарий. Вы можете сохранить этот скрипт и выполнять его при необходимости.

Сценарии оболочки в Linux упрощают программирование.

Способы создания простого сценария оболочки в Linux

Создать простой сценарий оболочки в Linux очень просто. Вы можете сделать это, используя несколько текстовых редакторов. В этом руководстве показано, как создать сценарий оболочки двумя разными способами, например 1) с использованием текстового редактора по умолчанию и 2) с помощью инструмента текстового редактора Vim.

Способ 1. Использование текстового редактора по умолчанию

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

Шаг 1. Создайте текстовый файл с расширением «.sh». Затем введите простой скрипт.

Shell Script testing.sh

Шаг 2. Теперь не меняйте каталог. И откройте терминал. С помощью приведенной ниже команды предоставьте исполняемый доступ к созданному файлу.

Шаг 3. Выполните указанный ниже скрипт в терминале:

Это был простой метод создания сценария оболочки в Linux с использованием редактора по умолчанию. Теперь давайте рассмотрим следующий метод.

Способ 2. Использование текстового редактора Vim

Инструмент текстового редактора Vim — это инструмент, который помогает создавать сценарии оболочки в системе Linux. Если он у вас еще не установлен, используйте команду для установки Vim:

Теперь следуйте инструкциям по созданию сценария оболочки с помощью этого инструмента.

Шаг 1. Чтобы открыть редактор, просто введите:

Шаг 2. Войдя, откройте терминал. Затем создайте файл bash через:

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

Сценарий оболочки для создания редактора Bash

Шаг 3. Нажмите «i» на клавиатуре и войдите в режим вставки. Теперь введите в него следующие команды.

Шаг 4. Нажмите «Esc», чтобы выйти из этого режима. Затем введите «:w», чтобы сохранить скрипт.

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

Редактор сохранения сценариев оболочки

Шаг 5. Вернувшись в консоль, введите «:q». Тогда напишите:

Приведенная выше команда выполнит файл оболочки и отобразит вывод в терминале.

Добавление комментариев в оболочке

В редакторе Vim откройте текстовый файл. И напишите комментарий, как показано ниже.

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

Переменные — это значения, которые могут хранить информацию в виде чисел и символов. Точно так же переменные оболочки также могут хранить данные. Например,

В приведенных выше строках будет создана переменная оболочки «var», а затем она будет напечатана.

Давайте сейчас напишем небольшой скрипт.

Чтобы получить значение переменной, выполните приведенную ниже команду.

Давайте напишем еще один скрипт, используя переменную.

Запустите файл сценария и введите «имя» как «Робин».

По мере ввода скрипт считывает имя и отвечает:

Затем введите «замечание» как «хорошее». И вы заметите, что сценарий повторяет замечание.

Вторая строка приведенного выше набора кодов показывает ответ скрипта.

Это были простые сценарии оболочки. Вы можете писать расширенные сценарии, содержащие циклы, функции и условные операторы. Сценарии оболочки упростят администрирование Linux.

Заключение

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

Супарна — независимый писатель, который пишет о Linux, включая советы, рекомендации и инструкции.

Читайте также: