Считывание переменных в Bash. Как получить ввод пользователя с клавиатуры?

считывание переменных в bash. как получить ввод пользователя с клавиатуры?

Диалог пользователя со скриптом

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

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

Чтение ввода с клавиатуры происходит с помощью вызова команды read внутри скрипта Bash. При этом выполнение сценария останавливается до того момента, когда пользователь нажмет клавишу Enter. Все символы, введенные до нажатия клавиши Enter, будут записаны в заранее определенную переменную. В общем виде выражение чтения ввода с клавиатуры выглядит следующим образом «read имя_переменной».

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

#!/bin/bash

#запрос имени директории будет повторятся
#пока вы не введете какое-либо значение
directory=''
while [ "$directory" = "" ]; do
    echo -n "Введите имя дирректории: "
    read directory

    if [ -n "$directory" ]; then
        ls -l $directory
    fi
done

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

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

Последние публикации