我今天开始学习shell编程,我正在尝试的是用3个选项做一个简单的选项菜单,如果用户键在1,2或3中,它将是一个有效的输入。除了1,2,3之外的任何东西都将是一个无效的输入。我已经尝试过但它没有工作,因为我的代码如下没有发生任何事情。 请建议谢谢。
#!/bin/bash
while :
do
clear
#display menu
echo "1) choice 1"
echo "2) choice 2"
echo "3) choice 3"
read -p "Enter choice: " choice
regex = "[1-3]"
if [[ $choice -ne $regex ]]; then
echo "Invalid input"
else
case $choice in
1) echo "this is choice one"
2) echo "this is choice two"
3) echo "this is choice three"
esac
fi
done
答案 0 :(得分:3)
您不是将它作为正则表达式进行比较。说:
if [[ ! $choice =~ $regex ]]; then
此外,在分配期间不应将空格=
。说:
regex="[1-3]"
来自manual:
另一个二元运算符
‘=~’
可用,具有相同的运算符 优先级为‘==’
和‘!=’
。使用时,右边的字符串 运算符被认为是扩展正则表达式和 相应地匹配
答案 1 :(得分:1)
请勿clear
或您不会看到任何内容。
删除=
周围的空白:
regex="[1-3]"
您的案件必须以;;
:
1) echo "this is choice one";;
2) echo "this is choice two";;
3) echo "this is choice three";;
介绍退出案例:
'x') exit 0;;
如果您使用默认情况作为最后一种情况,则不需要测试[[ ]]
:
*) echo "invalid input";;