select,trap

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è)無限循環(huán),因此要記住用break命令退出循環(huán),或用exit命令終止腳本。也可以按ctrl+c退出循環(huán)
select經(jīng)常和case聯(lián)合使用
與for循環(huán)類似,可以省略 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容