假設需要在shell下實現(xiàn)一個菜單,估計會使用 循環(huán)和read實現(xiàn)交互,在學習中發(fā)現(xiàn)一個select可在shell下很方便的實現(xiàn)這種交互菜單
1. select 語法
select var in ...
do
#your code
done
2. 示例
#! /bin/bash
echo "what is your favorite color :"
select color in "red" "blue" "green" "white" "black"
do
echo "you choose is $color"
break
done
Bash Shell中的select命令簡單使用示例
前言
今天剛好寫了一個自動化打包腳本,再次使用到了bash shell,好幸福的感覺。這里主要是想介紹一下select命令,這個命令
可以幫助我們完成菜單選擇功能。
格式
我今天也是第一次使用select流程控制,在php、Java、C這些語言中并沒有實現(xiàn)select功能。Bash Shell中,select格式如
下:
select $var in ${list[@]}
do
statements that can use $var
done
在select執(zhí)行時,會根據list數組給出選擇菜單,用戶選擇后的結果保存在$var變量中,然后執(zhí)行statements語句。執(zhí)行完成
后,再次給出菜單,等待用戶選擇。如果用戶想跳出選擇循環(huán),需要在循環(huán)體中根據條件增加break語句。
示例
給出一個select的示例,大家可以參考:
#!/bin/bash
fruits=(
"apple"
"pear"
"orange"
"watermelon"
)
echo "Please guess which fruit I like :"
select var in ${fruits[@]}
do
if [ $var = "apple" ]; then
echo "Congratulations, you are my good firend!"
break
else
echo "Try again!"
fi
done
例子2
#!/bin/sh
select ch in "begin" "end" "exit"
do
case $ch in
"begin")
echo "start something"
;;
"end")
echo "stop something"
;;
"exit")
echo "exit"
break;
;;
*)
echo "ignorant"
;;
esac
done;
運行效果:
yuxuecheng@linux:~/shellSource> ./select_test.sh
1) begin
2) end
3) exit
#? 1
start something
#? 2
stop something
#? 4
ignorant
#? begin
ignorant
#? 3
exit
說明:select是循環(huán)選擇,一般與case語句使用。