• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
2022
博客园    首页    新随笔    联系   管理    订阅  订阅

linux12shell编程 --> 流程控制之select语句

文章目录

    • 流程控制之select语句
        • 一 、语法
      • 二 、案例
        • 案例1:
        • 案例2:若省略 in list 则select会把 $@ 当做列表项
  • 案例三 select案例编写
  • 案例四 补充

流程控制之select语句

一 、语法

select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择

select var in ...
do
	...
	break
done

二 、案例

案例1:

[root@egon /]#  cat select.sh 
#!/bin/bash
PS3='choose one: ' # select默认使用PS3变量的值做提示符
echo

select var in {A..D}
do
    echo
    echo "your choose is $var"
    echo "OK"
    echo
    break # 跳出select,否则是死循环
done

[root@egon /]# 
[root@egon /]# ./select.sh

1) A
2) B
3) C
4) D
choose one: 3

your choose is C
OK

案例2:若省略 in list 则select会把 $@ 当做列表项

[root@egon /]# cat select.sh 
#!/bin/bash
PS3='choose one: ' # select默认使用PS3变量的值做提示符
echo

select var
do
    echo
    echo "your choose is $var"
    echo "OK"
    echo
    break # 跳出select,否则是死循环
done

[root@egon /]# ./select.sh 葡萄 梨 蔬菜 香蕉 桃子 

1) 葡萄
2) 梨
3) 蔬菜
4) 香蕉
5) 桃子
choose one: 1

your choose is 苹果
OK

案例三 select案例编写

[root@openvpn day5]# cat select.sh 
#! /bin/bash

PS3="请输入操作编号:"
select choice in {"退出","取款","转账","查询余额"}
do
case $choice in
    "退出")
        break
        ;;
    
    "取款")
        echo "正在提款"
        ;;
    
    "转账")
        echo "正在转账"
        ;;
    
    "查询余额")
        echo "正在查询余额"
        ;;
     
     * )
        echo "指令输入错误,请重新输入"
     esac
done

案例四 补充

[root@openvpn day5]# cat for3.sh 
#! /bin/bash

for i in "$*"
do
    echo $i
done

echo "=================="
for a in "$@"
do
    echo $a
done
[root@openvpn day5]# ./for3.sh 112 "23" 11
112 23 11
==================
112
23
11

# 跳板机脚本
[root@openvpn day5]# cat select_all.sh 
#! /bin/bash

PS3="请输入操作的主机:"
select all in web01 web02 web03
do
case $all in
    "web01")
     ssh web02
        ;;
    
    "web02")
      ssh web02
        ;;
    
    "web03")
       ssh web03
        ;;
     * )
        echo "账号或密码输入错误,请重新输入"
     esac
done
posted @ 2021-06-15 23:59  博客之记  阅读(96)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3