📅  最后修改于: 2023-12-03 14:43:56.956000             🧑  作者: Mango
select
命令是 Linux Shell 编程中的一种流程控制命令,它能够循环等待一组文件描述符(通常是测试键盘输入)的状态改变,一旦发生变化,便执行相应的操作。 select
命令的语法与 C 语言中的 switch
语句类似,可以用于选择不同的操作。下面是 select
命令的基本语法:
select var in wordlist
do
command1
command2
……
commandN
done
var
:循环中赋值给用户选择的值的变量名,可以是任意合法的变量名,建议使用小写字母。wordlist
:列表中的每个元素都会在每次循环中显示给用户。支持的元素格式为word
或 word1..word2
,元素之间使用空格分隔。do
:开始选择分支,do
和 done
之间的命令块将执行循环体内的命令,如果用户选择了合适的操作,则立即退出循环。command
:在每个循环中执行的命令。下面是一个简单的 select
命令示例,用于从菜单中选择一个操作:
#!/bin/bash
select opt in "Show Date" "Show Disk space" "Show User" "Quit"
do
case $opt in
"Show Date")
date
;;
"Show Disk space")
df -h
;;
"Show User")
whoami
;;
"Quit")
break
;;
*)
echo "Invalid option"
;;
esac
done
运行上面的脚本,会显示一个菜单,按照菜单编号选择一个操作即可。如果选择“Quit”,则循环会终止。
select
命令的一个常见用途是等待用户输入。当循环等待输入时,用户可以按下键盘上的任意键来输入,直到按下 Ctrl+C
停止循环。
下面是一个用于等待用户输入的示例:
#!/bin/bash
echo "Enter your choice: "
select name in "Bob" "Sue" "Jim" "Quit"; do
case $name in
"Bob")
echo "Hello Bob!"
;;
"Sue")
echo "Hello Sue!"
;;
"Jim")
echo "Hello Jim!"
;;
"Quit")
exit
;;
*)
echo "Invalid option"
;;
esac
done
运行上面的脚本,当用户输入Ctrl + C
时,循环会终止。
注意,select
命令只能用于交互式 Shell,不能用于非交互式 Shell。在文件输入流上等待输入的命令通常使用 read
命令。