select,trap

select

select

select variable in list
      do
                循环体命令
      done

select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3提示符,等待用户输入
用户输入菜单列表的某个数字,执行相应的命令
用户输入被保存在内置变量REPLY中
select是个无限循环,因此要记住用break命令退出循环,或用exit命令终止脚本。也可以按ctrl+c退出循环
select经常和case联合使用
与for循环类似,可以省略 in list,此时使用位置参量
示例:建立一个菜单

[root@centos SC]#vim menu.sh
#!/bin/bash
######提示输入
PS3="please choose your menu: "
######建立菜单选择
select menu in exit huimian hulatang yangroutang
do
        case $menu in
        exit)
                echo exit
                exit
                ;;
        huimian)
                echo 10yuan
                ;;
        hulatang)
                echo 5yuan
                ;;
        yangroutang)
                echo 15yuan
                ;;
        *)
                echo unknown
                break
        esac
        echo your choose is $menu
        echo "You input is $REPLY"
done
"menu.sh" 27L, 370C written      
######测试结果                                          
[root@centos SC]#./menu.sh  
1) exit
2) huimian
3) hulatang
4) yangroutang
please choose your menu: 3
5yuan
your choose is hulatang
You input is 3
please choose your menu: 2
10yuan
your choose is huimian
You input is 2
please choose your menu: 1
exit
[root@centos SC]#./menu.sh
1) exit
2) huimian
3) hulatang
4) yangroutang
please choose your menu: 6
unknown

trap

trap

trap '触发指令' 信号
      自定义进程收到系统发出的指定信号后,将执行触发指令,而不会执行原操作
trap ' ' 信号
      忽略信号的操作
trap '-' 信号
      恢复原信号的操作
trap -p
      列出自定义信号操作

trap 示例

[root@centos SC]#vim trap.sh
#!/bin/bash
######用显示int代替原有信号会有的操作
trap 'echo int' int  
trap -p
for i in {1..10}
do
        echo i=$i
        sleep 0.5
done
######忽略信号的操作
trap '' int
trap -p
for i in {11..20}
do
        echo i=$i
        sleep 0.5
done
恢复原有信号的操作
trap '-' int
trap -p
for i in {21..30}
do
        echo i=$i
        sleep 0.5
done
######测试结果:
[root@centos SC]#./trap.sh  
trap -- 'echo int' SIGINT
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
i=10
trap -- '' SIGINT
i=11
i=12
i=13
i=14
i=15
i=16
i=17
i=18
i=19
i=20
i=21
i=22
i=23
i=24
i=25
i=26
i=27
i=28
i=29
i=30
[root@centos SC]#./trap.sh
trap -- 'echo int' SIGINT
i=1
i=2
i=3
i=4
######正常情况下ctrl+c会退出脚本,此处用echo int代替
^Cint
i=5
i=6
i=7
i=8
^Cint
i=9
i=10
trap -- '' SIGINT
i=11
i=12
i=13
#######此处忽略原有信号ctrl+c操作
^Ci=14
i=15
i=16
i=17
^Ci=18
i=19
i=20
i=21
i=22
i=23
######此处恢复原有ctrl+c信号操作
^C

你可能感兴趣的:(select,trap)