我创建了一个bash脚本,该脚本本质上是一个包含许多问题的向导,其中有些是多项选择。当提出多项选择题时,我希望用户能够选择一个数字,其中每个数字对应一个不同的答案。我希望这个答案是可以在脚本中稍后使用的变量。
我意识到这就是“选择”功能的用途,但是当用户只是按下[ENTER]时,我也有一个要求,即假定使用默认值。据我所知,当按下[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
答案 0 :(得分:2)
;
之前插入break
。$hash
替换为${hash:=2}
以使用默认值。"") hash="sha256" break 2;;
可以被删除。