首页 » Linux » 20道必会shell题第12题

20道必会shell题第12题

 

企业面试题12:打印选择菜单,一键安装Web服务:
[root@oldboyscripts]# sh menu.sh

1.[install lamp]

2.[install lnmp]

3.[exit]

pls input the num you want:

要求:
1、当用户输入1时,输出“startinstalling lamp.”然后执行/server/scripts/lamp.sh,脚本内容输出”lampis installed”后退出脚本;
2、当用户输入2时,输出“startinstalling lnmp.”然后执行/server/scripts/lnmp.sh输出”lnmpis installed”后退出脚本;
3、当输入3时,退出当前菜单及脚本;
4、当输入任何其它字符,给出提示“Input error”后退出脚本。
5、要对执行的脚本进行相关条件判断,例如:脚本是否存在,是否可执行等。

思路:利用函数来分块实现功能,实现菜单循环,可以调用函数实现,也就是可以不用循环语句来实现。

答案:
 [root@nfs_server scripts]# cat menu.sh 
#!/bin/bash
menu(){
cat<<EOF
####################
# 1.[INSTALL LAMP] #
# 2.[INSTALL LNMP] #
# 3.[EXIT]         #
####################
EOF
read -t 20 -p "pls input the num you want:" a
}

read1(){
 if [ "$a" == "1" ]
 then
 echo "start installing lamp...."
 [ -f /server/scripts/lamp.sh ]&& /bin/sh /server/scripts/lamp.sh || echo "!!!!!! the lamp.sh scripts is not exist,pls create it!!!!!!!"
 menu
 read1
 elif [ "$a" == "2" ]
 then
 echo "start installing lnmp...."
 [ -f /server/scripts/lnmp.sh ]&& /bin/sh /server/scripts/lnmp.sh ||echo "!!!!!!the lnmp.sh scripts is not exist,pls create it!!!!!!"
 menu
 read1
 elif [ "$a" == "3" ]
 then
 echo "exiting...."
 exit
 else 
 echo "input error ,pls input num!!!"
 exit 3
 fi


}
menu
read1

原文链接:20道必会shell题第12题,转载请注明来源!

0