🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
`select`结构主要用来生成简单的菜单。它的语法与`for...in`循环基本一致。 ~~~ select name [in list] do commands done ~~~ Bash 会对`select`依次进行下面的处理。 1. `select`生成一个菜单,内容是列表`list`的每一项,并且每一项前面还有一个数字编号。 2. Bash 提示用户选择一项,输入它的编号。 3. 用户输入以后,Bash 会将该项的内容存在变量`name`,该项的编号存入环境变量`REPLY`。如果用户没有输入,就按回车键,Bash 会重新输出菜单,让用户选择。 4. 执行命令体`commands`。 5. 执行结束后,回到第一步,重复这个过程。 下面是一个例子。 ~~~ #!/bin/bash # select.sh select brand in Samsung Sony iphone symphony Walton do echo "You have chosen $brand" done ~~~ 执行上面的脚本,Bash 会输出一个品牌的列表,让用户选择。 ~~~ $ ./select.sh 1) Samsung 2) Sony 3) iphone 4) symphony 5) Walton #? ~~~ 如果用户没有输入编号,直接按回车键。Bash 就会重新输出一遍这个菜单,直到用户按下`Ctrl + c`,退出执行。 `select`可以与`case`结合,针对不同项,执行不同的命令。 ~~~ #!/bin/bash echo "Which Operating System do you like?" select os in Ubuntu LinuxMint Windows8 Windows10 WindowsXP do case $os in "Ubuntu"|"LinuxMint") echo "I also use $os." ;; "Windows8" | "Windows10" | "WindowsXP") echo "Why don't you try Linux?" ;; *) echo "Invalid entry." break ;; esac done ~~~ 上面例子中,`case`针对用户选择的不同项,执行不同的命令。