写脚本的时候会碰到建立交互式菜单的状况,好比碰到写一个lnmp一键安装脚本的时候会让用户选择安装mysql的版本或者选择安装各类组件,总之在建立菜单是很常见的。mysql
而select是bash的一种扩展应用,让用户能够在一组不一样的值中选择,相似下面linux
This is a menu Test Please Choose what you want 1) bugger 2) linux: #?
以后你就输入前面的菜单选择就是了sql
#!/bin/bash echo "Please select your favorite linux distribution" linux_distributions="Ubutnu Fedora Centos Arch" select linux_distribution in $linux_distributions: do echo "you selected $REPLY $linux_distribution" done
上面要注意几个地方,select这个循环内容里面包含的是选择以后要执行的东西REPLY这个变量就是你选择的菜单的号码,其实不难,好比再好比下面shell
#!/bin/bash ubuntu(){ echo "This is ubuntu func" } fedora(){ echo "This is fedora func" } centos(){ echo "This is centos func" } arch(){ echo "This is arch func" } echo "Please select your favorite linux distribution" linux_distributions="Ubutnu Fedora Centos Arch" select linux_distribution in $linux_distributions: do case $REPLY in 1) ubuntu ;; 2) fedora ;; 3) centos ;; 4) arch ;; *) echo "please choose 1-4" ;; esac done
执行结果ubuntu
Please select your favorite linux distribution 1) Ubutnu 2) Fedora 3) Centos 4) Arch: #? 1 This is ubuntu func #? 2 This is fedora func #? 3 This is centos func #? 4 This is arch func #? 5 please choose 1-4 #? 6 please choose 1-4 #?
select可能有的shell会报错,好比zsh ./test.sh: 9: ./test.sh: select: not found
centos
其实只要指定shell去执行就能够bash
bash + 要执行的脚本
code
欢迎关注Bboysoul的博客www.bboysoul.com Have Funblog