select可用于循坏,select与其他循环相似的是,依靠在代码块顶部或底部的条件判断来决定程序的分支。在多菜单显示、需要用户输入方面,select可以很方便地输出菜单,供用户选择使用。select语句一般配合case语句使用,其语法格式为:
select choice in menu_1,menu_2,menu_3...
do
case "$choice" in
menu_1)
cmd
;;
menu_2)
cmd
;;
...
menu_m)
break
;;
menu_n)
exit
;;
esac
done
使用示例:显示计算机系统相关信息
#! /bin/bash
select choice in disk_partition file_sys cpu_load mem_util quit
do
case "$choice" in
disk_partition)
fdisk -l
;;
file_sys)
df -h
;;
cpu_load)
uptime
;;
mem_util)
free -m
;;
q)
break
;;
*)
echo "error"
exit
;;
esac
done
执行结果:
由上面运行结果可知:执行shell脚本后出现菜单选项,且只出现一次。那么如果需要一次查看的选项很多时,可能并不那么方便,这里结合while循坏,可以实现在每次输入都能显示菜单选项。编码如下:
#! /bin/bash
# PS3 = "Your choice is[5 for exit]:"
while true;do
select choice in disk_partition file_sys cpu_load mem_util quit
do
case "$choice" in
disk_partition)
fdisk -l
break
;;
file_sys)
df -h
break
;;
cpu_load)
uptime
break
;;
mem_util)
free -m
break
;;
quit)
break
;;
*)
echo "error"
exit
;;
esac
done
echo "-----------------------------------------------------------------------"
done
通过在select外面加上while循环,case语句中每匹配一次执行一次break退出select语句,由此实现对select语句进行循坏。执行结果如下图,每次输入后,都将打印一次菜单