Во время моего приключения в написании 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
BASH – Использование команды чтения в функции ввода с клавиатуры. Является ли мой метод приемлемым или достаточно эффект ⇐ Linux
1731422378
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79181571/bash-using-the-read-command-in-a-function-for-keyboard-input-is-my-method-ac[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия