Я создал скрипт bash, который по сути является мастером с несколькими вопросами, некоторые из которых имеют множественный выбор.Когда задается вопрос с несколькими вариантами ответа, я хочу, чтобы пользователь мог выбрать число, где каждое число соответствует отдельному ответу.Я хочу, чтобы этот ответ был переменной, которая может быть позже использована в скрипте.
Я понимаю, что для этого используется функция 'select', но у меня также есть требование, когда пользователь просто нажимает [ENTER] предполагается значение по умолчанию.Насколько я знаю, функция «select» принимает пустое значение «» при нажатии клавиши [ENTER] (недопустимая опция) и повторно запрашивает вопрос.
Приведенный ниже код я пытаюсьобновить переменную при нажатии числа.Например, когда нажата цифра «1», я хочу, чтобы переменная $ hash была обновлена до «sha224».
Можно ли добиться этого с помощью оператора case без «select»?Если нет, каковы мои альтернативы?
echo
echo "Select a hashing algorithm"
echo "1 - sha224"
echo "2 - sha256"
echo "3 - sha384"
echo "4 - sha512"
while true; do
read -p "Option: [sha256]:" -e hash
case $hash in
"") hash="sha256" break 2;;
1) hash="sha224" break 2;;
2) hash="sha256" break 2;;
3) hash="sha384" break 2;;
4) hash="sha512" break 2;;
*) echo "Invalid Response: Please enter [1-4] and hit [ENTER] or hit [ENTER] to select 'sha256'";;
esac
done