天天看點

linux12shell程式設計 --> 流程控制之select語句案例三 select案例編寫案例四 補充

文章目錄

    • 流程控制之select語句
        • 一 、文法
      • 二 、案例
        • 案例1:
        • 案例2:若省略 in list 則select會把 [email protected] 當做清單項
  • 案例三 select案例編寫
  • 案例四 補充

流程控制之select語句

一 、文法

select表達式是bash的一種擴充應用,擅長于互動式場合。使用者可以從一組不同的值中進行選擇

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

二 、案例

案例1:

[[email protected] /]#  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

[[email protected] /]# 
[[email protected] /]# ./select.sh

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

your choose is C
OK
           

案例2:若省略 in list 則select會把 [email protected] 當做清單項

[[email protected] /]# 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

[roo[email protected] /]# ./select.sh 葡萄 梨 蔬菜 香蕉 桃子 

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

your choose is 蘋果
OK
           

案例三 select案例編寫

[[email protected] day5]# cat select.sh 
#! /bin/bash

PS3="請輸入操作編号:"
select choice in {"退出","取款","轉賬","查詢餘額"}
do
case $choice in
    "退出")
        break
        ;;
    
    "取款")
        echo "正在提款"
        ;;
    
    "轉賬")
        echo "正在轉賬"
        ;;
    
    "查詢餘額")
        echo "正在查詢餘額"
        ;;
     
     * )
        echo "指令輸入錯誤,請重新輸入"
     esac
done
           

案例四 補充

[[email protected] day5]# cat for3.sh 
#! /bin/bash

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

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

# 跳闆機腳本
[[email protected] 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