Linux shell select菜單選擇實現代碼

假設需要在shell下實現一個菜單,估計會使用 循環和read實現交互,在學習中發現一個select可在shell下很方便的實現這種交互菜單

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這些語言中並沒有實現select功能。Bash Shell中,select格式如
下:

select $var in ${list[@]}
do
statements that can use $var
done

在select執行時,會根據list數組給出選擇菜單,用戶選擇後的結果保存在$var變量中,然後執行statements語句。執行完成
後,再次給出菜單,等待用戶選擇。如果用戶想跳出選擇循環,需要在循環體中根據條件增加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是循環選擇,一般與case語句使用。

推薦閱讀: