我如何创建具有多项选择菜单变量的 shell 脚本?
how do i create a shell script with multiple choice menu variables?
这是我正在尝试做的事情
Please pick from the following
1) area1
2) area2
3) area3
Now pick a place based on the area you chose
1) place1
2) place2
3) place3
Based on $area and $place here is what you need...
我的猜测是我需要 case 和 if 语句的组合,但我无法解决这个问题。
按照@Barmar 的建议使用select
语句。
基于您的示例:
echo 'Please pick from the following'
select area in area1 area2 area3
do
case $area in
area1|area2|area3)
break
;;
*)
echo "Invalid area"
;;
esac
done
echo 'Now pick a place based on the area you chose'
select place in place1 place2 place3
do
case $place in
place1|place2|place3)
break
;;
*)
echo "Invalid place"
;;
esac
done
echo "Based on $area and $place here is what you need..."
我使用 a|b|c)
对多个选项进行分组,但您可以为每个选项提供单独的代码路径。 *)
可以用作 "else" 子句。使用 break
跳出菜单循环。在 case
语句中的子句之间使用 ;;
,在单个子句中的语句之间使用 ;
。
这是我正在尝试做的事情
Please pick from the following
1) area1
2) area2
3) area3
Now pick a place based on the area you chose
1) place1
2) place2
3) place3
Based on $area and $place here is what you need...
我的猜测是我需要 case 和 if 语句的组合,但我无法解决这个问题。
按照@Barmar 的建议使用select
语句。
基于您的示例:
echo 'Please pick from the following'
select area in area1 area2 area3
do
case $area in
area1|area2|area3)
break
;;
*)
echo "Invalid area"
;;
esac
done
echo 'Now pick a place based on the area you chose'
select place in place1 place2 place3
do
case $place in
place1|place2|place3)
break
;;
*)
echo "Invalid place"
;;
esac
done
echo "Based on $area and $place here is what you need..."
我使用 a|b|c)
对多个选项进行分组,但您可以为每个选项提供单独的代码路径。 *)
可以用作 "else" 子句。使用 break
跳出菜单循环。在 case
语句中的子句之间使用 ;;
,在单个子句中的语句之间使用 ;
。