BASH – Использование команды чтения в функции ввода с клавиатуры. Является ли мой метод приемлемым или достаточно эффектLinux

Ответить
Anonymous
 BASH – Использование команды чтения в функции ввода с клавиатуры. Является ли мой метод приемлемым или достаточно эффект

Сообщение Anonymous »

Во время моего приключения в написании bash-скриптов я начал экспериментировать с функциями и хотел, чтобы пользователь взаимодействовал со скриптом посредством ввода с клавиатуры.
Итак, я создал этот короткий пример сценарий (см. ниже).
Мой вопрос сегодня заключается в следующем: является ли мой сценарий наиболее эффективным методом, то есть с использованием глобальной переменной, поскольку нельзя возвращать нецелочисленные значения из функция? ИЛИ, есть ли более эффективный метод достижения того же результата?
Функция под названием read_keyboard имеет два параметра: первый — это приглашение к сообщению, а второй — допустимые символы клавиатуры.
Ваши мысли и вклад очень ценны.
Спасибо!
#!/usr/bin/env bash

echo -e "\nBash version: ${BASH_VERSION}..."
echo -e "Shell location: ${SHELL}"
echo -e "Current directory: ${PWD}\n"

if [[ -f "diff-output.txt" ]]; then
echo -e "File 'diff-output.txt' already exists"
rm -i ./diff-output.txt
fi

echo -e "Creating a new file called 'diff-output.txt'\n"
echo "This temporary file called 'diff-output.txt' has been created." 1> diff-output.txt

# Global variables
ans=""
retval=""

declare -f read_keyboard

function read_keyboard {
echo "var1 = $1"
echo "var2 = $2"
echo ""

while true; do
read -r -n 1 -s -p "$1" ans
echo ""
echo -e "ans = ${ans}"
if [[ ${ans} == ["$2"] ]]; then
echo ""
break
else
echo -e "\nYou pressed an invalid key\n"
fi
done
return 0
}

echo -e "\nDo you want to see the contents of file 'diff-output.txt' ?\n"
read_keyboard "Press [Y]es or [N]o" "yYnN"

retval="$?"
echo -e "return value = $retval"
echo -e "You pressed: ${ans}"

if [[ ${ans} == [yY] ]]; then
echo ""
cat ./diff-output.txt
echo ""
fi

if [[ -f ./diff-output.txt ]]; then
rm -i ./diff-output.txt
fi

echo -e "\nExiting shell script...\n"
exit 0


Подробнее здесь: https://stackoverflow.com/questions/791 ... -method-ac
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»