Ввод значений пользователем в Bash с помощью команды read

You can use multiple if…elif statements to perform a multiway branch. However, this is not always the best solution, especially when all of the branches depend on the value of a single variable.

Что такое Bash

Bash (Bourne again shell или «возрождённый» shell) – это модифицированная версия программной оболочки Bourne-shell (sh или «Оболочка Борна»). Она является командным процессором, работающим интерактивно в текстовом окне. Bash нужен для приема команд пользователя и их отправки операционной системе для последующей обработки.

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

Что такое Bash

История создания

Предшественница Bash  –  Bourne-shell (sh, «Оболочка Борна») была одной из первых оболочек для операционных систем Unix. Ее создал в 1978 году британский ученый Стивен Борн, давший Bourne-shell свое имя.

Изначально оболочка sh обладала относительно небольшим набором функций. Но в 1987 году Bourne-shell заинтересовался программист Брайан Фокс, сумевший доработать и значительно расширить ее функционал. В 1989 году Брайан создал бета-версию Bash и продолжал поддерживать свое детище вплоть до 1993 года.

Брайан Фокс — создатель оболочки Bash.

Что такое Bash

Основные команды, правила их написания и прочие особенности Bash были перенесены из sh. Прочие возможности, включая историю, позаимствованы из Korn Shell и C Shell (других вариаций Bourne-shell). Bash практически полностью соответствует стандартам POSIX.

Сегодня оболочка Bash предустановлена в большей части дистрибутивов Unix/Linux. Взаимодействие оболочки и операционной системы обеспечивается с помощью специальной программы – терминала (например, lxterm, xterm, eterm, gnome-terminal).

Читайте также:  Долой провода: как выбрать беспроводные наушники

Основные

Помощь

Забыли аргументы для cp? Какая опция у команды mkdir? Вот вам подсказка:

help nano # кратко о команде “nano” man nano # подробная информация о “nano”

Конвейер

Зачастую с его помощью перенаправляют вывод одной команды на ввод другой или приписывают команду к файлу:

a | b # конвейер: передать вывод команды a на ввод b a > # сохранить вывод команды a в (перезаписать) a >> # сохранить вывод команды a в (добавить) echo «Hello!» | xargs echo # направить вывод первой команды, как аргумент второй

Фильтрация вывода

Бывает, что команда выводится слишком долго. В этом случае вы либо разделите страницу с помощью команды more или less, либо выведите строки, которые содержат специальное слово или предложение с grep:

cat | more # постранично показывает содержимое cat | постранично показывает содержимое , и позволяет перемещаться по файлу cat | grep “I love you” # показывает строчку, где расположена строка “I love you”

Очистка экрана

Слишком много текста в терминале? Просто напишите clear и продолжайте работать.

clear # очистка терминала

Скрытый ввод значения (пароля) с клавиатуры в Bash с помощью команды read

Ну и рассмотрим ещё одну опцию -s, которая позволяет скрыто вводить (пароли) с клавиатуры. После ввода пароля, для его завершения, нужно также нажать Enter. После этого введённое значение попадёт в переменную:

[email protected]:~# read -sp «Введите пароль: » password && echo Введите пароль: [email protected]:~# echo «Был введён пароль: » $password Был введён пароль: ПаРоЛь [email protected]:~#

В примере выше, опции -s и -p должны идти именно в таком порядке, если нужна подсказка, но записать их можно либо как в примере -sp, либо -s -p. Команда read работать будет одинаково.

Читайте также:  Почему исследователи до сих пор используют эмуляторы терминалов

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

Использование стандартных ключей

-a Вывести все объекты. -c Произвести подсчёт. -d Указать директорию. -e Развернуть объект. -f Указать файл, из которого нужно прочитать данные. -h Вывести справку по команде. -i Игнорировать регистр символов. -l Выполнить полноформатный вывод данных. -n Использовать неинтерактивный (пакетный) режим. -o Позволяет указать файл, в который нужно перенаправить вывод. -q Выполнить скрипт в quiet-режиме. -r Обрабатывать папки и файлы рекурсивно. -s Выполнить скрипт в silent-режиме. -v Выполнить многословный вывод. -x Исключить объект. -y Ответить «yes» на все вопросы.

Использование стандартных ключей
Использование стандартных ключей
Использование стандартных ключей
Использование стандартных ключей
Использование стандартных ключей
Использование стандартных ключей
Использование стандартных ключей

Пример заявления case

Вот пример использования оператора case в bash-скрипте, который будет печатать официальный язык данной страны:

#!/bin/bash echo -n «Введите название страны: » read COUNTRY echo -n «Официальный язык $COUNTRY это » case $COUNTRY in Russia) echo -n «Russia» ;; Brazil) echo -n «Brazil» ;; Italy | «San Marino» | Switzerland | «Vatican City») echo -n «Italian» ;; *) echo -n «неизвестный» ;; esac

Сохраните пользовательский скрипт в виде файла и запустите его из командной строки.

bash

Скрипт попросит вас ввести страну. Например, если вы введете «Russia», она будет соответствовать первому шаблону, и команда echo в этом предложении будет выполнена.

Скрипт выведет следующий вывод:

Введите название страны: Russia Официальный язык Russia это Russian

Если вы вводите страну, которая не соответствует ни одному другому шаблону, кроме подстановочного символа по умолчанию, скажем, Ukraine, скрипт выполнит команду echo внутри предложения по умолчанию.

Читайте также:  Регулярные выражения в командной оболочке Bash

Введите название страны: Ukraine Официальный язык Ukraine is неизвестный