select
select
select variable in list
do
循環(huán)體命令
done
select循環(huán)主要用于創(chuàng)建菜單秃症,按數(shù)字順序排列的菜單項(xiàng)將顯示在標(biāo)準(zhǔn)錯(cuò)誤上候址,并顯示PS3提示符,等待用戶輸入
用戶輸入菜單列表的某個(gè)數(shù)字种柑,執(zhí)行相應(yīng)的命令
用戶輸入被保存在內(nèi)置變量REPLY中
select是個(gè)無(wú)限循環(huán)岗仑,因此要記住用break命令退出循環(huán),或用exit命令終止腳本聚请。也可以按ctrl+c退出循環(huán)
select經(jīng)常和case聯(lián)合使用
與for循環(huán)類(lèi)似荠雕,可以省略 in list,此時(shí)使用位置參量
示例:建立一個(gè)菜單
[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
######測(cè)試結(jié)果
[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 '觸發(fā)指令' 信號(hào)
自定義進(jìn)程收到系統(tǒng)發(fā)出的指定信號(hào)后良漱,將執(zhí)行觸發(fā)指令,而不會(huì)執(zhí)行原操作
trap ' ' 信號(hào)
忽略信號(hào)的操作
trap '-' 信號(hào)
恢復(fù)原信號(hào)的操作
trap -p
列出自定義信號(hào)操作
trap 示例
[root@centos SC]#vim trap.sh
#!/bin/bash
######用顯示int代替原有信號(hào)會(huì)有的操作
trap 'echo int' int
trap -p
for i in {1..10}
do
echo i=$i
sleep 0.5
done
######忽略信號(hào)的操作
trap '' int
trap -p
for i in {11..20}
do
echo i=$i
sleep 0.5
done
恢復(fù)原有信號(hào)的操作
trap '-' int
trap -p
for i in {21..30}
do
echo i=$i
sleep 0.5
done
######測(cè)試結(jié)果:
[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會(huì)退出腳本欢际,此處用echo int代替
^Cint
i=5
i=6
i=7
i=8
^Cint
i=9
i=10
trap -- '' SIGINT
i=11
i=12
i=13
#######此處忽略原有信號(hào)ctrl+c操作
^Ci=14
i=15
i=16
i=17
^Ci=18
i=19
i=20
i=21
i=22
i=23
######此處恢復(fù)原有ctrl+c信號(hào)操作
^C