bash скрипты. Взаимодействие с пользователем. Ввод данных

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

Самый простой способ это, конечно же, вывод текста через команду echo.

echo "Описания действия" 

Обычно такой способ используют для уведомления этапа выполнения скрипта (начала или завершения выполнения). Просто пропишите команду с текстом до или после нужной команды и при выполнении скрипта вы будете видеть эти сообщения.

ОК при успешном выполнении команды.

При выполении установки программы или выполнении других скриптов можно заметить что выполнения некоторых этапов отображается выводом сообщений ОК\fail. Для это сначала нужно задать цвета:

COLOR_SUCCESS="echo -en \\033[1;32m" 
COLOR_FAILURE="echo -en \\033[1;31m" 
COLOR_NORMAL="echo -en \\033[0;39m" 

И после необходимой Вам команды, или набора команд, нужно прописать код который будет отображить ОК\fail в зависимости успешного выполнения команды:

if [ $? -eq 0 ]; then
    $COLOR_SUCCESS
    echo -n "[command] $(tput hpa $(tput cols))$(tput cub 6)[OK]" 
    $COLOR_NORMAL
    echo
else
    $COLOR_FAILURE
    echo -n "[command] $(tput hpa $(tput cols))$(tput cub 6)[fail]" 
    $COLOR_NORMAL
    echo
fi

Ввести yes\no для продолжения выполнения

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

echo -n "Для продолжения напишите [Yes] или [No] в нажмите Enter: " 

read item
case "$item" in
    YES|yes|Yes|yEs|yeS|YEs|YeS|yES) echo "Вы ввели «Yes», продолжаем..." 
        ;;
    No|no|nO) echo "Вы ввели «No», остановка работы скрипта!" 
        exit 0
        ;;
    *) echo "Вы ничего не ввели. Выполняеться действие по умолчанию." 
        ;;
esac

Код нужно вставить перед необходимой командой. Если пользователь ничего не введет, а просто нажмет Enter — скрипт будет выполняться дальше.

Задействовать вводимые данные

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

que=''
while [ "$que" = "" ]; do
    echo -n "Введите данные которые будут использованы в программе: " 
    read  que
    if [ -n "$que" ]; then
    echo "Вы ввели $que" 
    fi
done

Где,
echo «Вы ввели $que» — пример команды, где будет использованы данные, которые ввел пользователь.

Goodhoster.NET
Добавить комментарий