编写简单的多级菜单,shell的简单编写

一、简单的俯10便是菜单

[root@web129 ~]# cat menu.sh 
#!/bin/bash
#shell菜单演示
function menu()
{
echo -e `date`
cat <<EOF
-----------------------------------
>>>菜单主页:
`echo -e "\033[35m 1)系统状态\033[0m"`
`echo -e "\033[35m 2)服务管理\033[0m"`
`echo -e "\033[35m 3)主菜单\033[0m"`
`echo -e "\033[35m Q)退出\033[0m"`
EOF
read -p "请输入对应序列号:" num1
case $num1 in
    1)
    echo -e "\033[32m >>>系统状态-> \033[0m"
    system_menu
    ;;
    2)
    echo -e "\033[32m >>>服务管理-> \033[0m"
    server_menu
    ;;
    3)
    echo -e "\033[32m >>>返回主菜单-> \033[0m"
    menu
    ;;
    Q|q)
    echo -e "\033[32m--------退出--------- \033[0m"
    exit 0
    ;;
    *)
    echo -e "\033[31m err:请输入正确的编号\033[0m"
    menu
esac
}
function system_menu()
{
cat<<EOF
------------------------
********系统状态********
------------------------
1)nginx 状态
2)http 状态
3)tomcat 状态
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num2
case $num2 in
    1)
    `echo -e "systemctl status nginx.service"`
    system_menu
    ;;
    2)
     `echo -e "systemctl status httpd.service"`
    system_menu
    ;;
    3)
     `echo -e "systemctl status tomcat.service"`
    system_menu
    ;;
    x|X)
    echo -e "\033[32m---------返回上一级目录------->\033[0m"
    menu
    ;;
    *)
    echo -e "请输入正确编号"
    system_menu
esac
}
function server_menu()
{
cat<<EOF
------------------------
1)开启服务
2)停止服务
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num3
case $num3 in
        1)
        op_menu
        ;;
        2)
        op_menu1
        ;;
        x|X)
        echo -e "\033[32m-- -----返回上一级目录---------> \033[0m"
        menu
        ;;
        *)
        echo -e "请输入正确编号"
        system_menu
esac
}

function op_menu()
{
cat<<EOF
------------------------
1)开启nginx服务
2)开启http服务
3)开启tomcat服务
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num4
case $num4 in
        1)
    `echo -e "systemctl start nginx.service"`
    op_menu
        ;;
        2)
    `echo -e "systemctl start httpd.service"`
        op_menu
    ;;
    3)
    `echo -e "systemctl start tomcat.service"`
        op_menu
        ;;
        x|X)
        echo -e "\033[32m--------返回上一级目录------->\033[0m"
        server_menu
        ;;
        *)
        echo -e "请输入正确编号"
    op_menu
esac
}
function op_menu1()
{
cat<<EOF
------------------------
1)停止nginx服务
2)停止http服务
3)停止tomcat服务
X)返回上一级目录
------------------------
EOF
read -p "请输入编号:" num5
case $num5 in
        1)
        `echo -e "systemctl stop nginx.service"`
        op_menu1
        ;;
        2)
        `echo -e "systemctl stop httpd.service"`
        op_menu1
        ;;
        3)
        `echo -e "systemctl stop tomcat.service"`
        op_menu1
        ;;
        x|X)
        `echo -e "\033[32m >>>返回上一级目录---> \033[0m"`
        server_menu
        ;;
        *)
        echo -e "请输入正确编号"
        op_menu1
esac
}
menu
[root@web129 ~]# 

 

编写简单的多级菜单,shell的简单编写。显示效果如下:

图片 1

图片 2

 

引语:自身自身以前并未写过shell脚本,恐怕是因为懒,可能是平素不被逼到要去写shell的地步。不过,前段时间,工作急需,供给再度跑多少个月的剧本,那几个脚本是天天定时开展跑的,而且每日是1些个剧本①起涉及跑的。你大概会说,那太简单了,写个巡回,然后,让她协调去跑就行了。是的,你能够很顺手的用你的编制程序语言去写循环,如PHP。不过,你精晓,那样抓实际是改变了代码结构了,鬼知道会导致咋样结果吗?
并且,作者并不保障内部全部代码的意趣,作者都懂!那么,难题来了,在不转移原代码的前提下,怎么着去巡回那多少个月的时日吗?
没有错,那正是,照猫画虎真实运维时的情形,传入须要收取的日期参数(前提是你的代码里面早已有了那一个门)!你了解,那种定时脚本都有二个淡雅的名字,crontab,那么,就是shell了,你要做的正是写shell了。

上节课大家一齐读书了Sqoop(数据迁移工具),那节课大家一并简单学习一下Shell脚本。

shell达成多重菜单脚本编写

原文:

那篇文章首要介绍了Shell完结多重菜单系统装置脚本实例分享,本文脚本用多级菜单达成LAMP、LNMP安装呈现效果,需求的意中人能够参见下:

晋升:本脚本主要实现多元菜单功能,并从未安装LAMP、LNMP环境,假诺要用在实际上变化环境中配备LNMP、LAMP环境,只要求简单修改一下就可以了。

示范效果:

1、一级菜单

图片 3

二、二级菜单

图片 4

三、执行操作

图片 5

剧本参考:

代码如下:
#!/bin/bash
#
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
function menu(){
cat << EOF
----------------------------------------------
|*******Please Enter Your Choice:[1-4]*******|
----------------------------------------------
*   `echo -e "\033[35m 1)lamp install\033[0m"`
*   `echo -e "\033[35m 2)lnmp install\033[0m"`
*   `echo -e "\033[35m 3)quit\033[0m"`
*   `echo -e "\033[35m 4)return main menu\033[0m"`
EOF
}
function lamp_menu(){
cat << EOF
----------------------------------------------
|*******Please Enter Your Choice:[1-4]*******|
----------------------------------------------
*   `echo -e "\033[35m 1)http install\033[0m"`
*   `echo -e "\033[35m 2)mysql install\033[0m"`
*   `echo -e "\033[35m 3)php install\033[0m"`
*   `echo -e "\033[35m 4)return main menu\033[0m"`
EOF
read -p "####please input second_lamp optios[1-4]: " num2
expr $num2 + 1 &>/dev/null  #这里加1,判断输入的是不是整数。
if [ $? -ne 0 ];then    #如果不等于零,代表输入不是整数。
 echo "###########################"
 echo "Waing !!!,input error   "
 echo "Please enter choose[1-4]:"
 echo "##########################"
 exit 1
fi
case $num2 in
  1)
   action "Installed httpd..." /bin/true
   sleep 2
   lamp_menu
   ;;
  2)
   action "Installed MySQL..." /bin/true
   sleep 2
   lamp_menu
   ;;
  3)
   action "Installed PHP..." /bin/true
   sleep 2
   lamp_menu
   ;;
  4)
   clear
   menu
   ;;
  *)
   clear
   echo 
   echo -e "\033[31mYour Enter the wrong,Please input again Choice:[1-4]\033[0m"
   lamp_menu
esac
}
function lnmp_menu(){
cat << EOF
----------------------------------------------
|*******Please Enter Your Choice:[1-4]*******|
----------------------------------------------
*   `echo -e "\033[35m 1)nginx install\033[0m"`
*   `echo -e "\033[35m 2)mysql install\033[0m"`
*   `echo -e "\033[35m 3)php install\033[0m"`
*   `echo -e "\033[35m 4)return main menu\033[0m"`
EOF
read -p "please input second_lnmp options[1-4]: " num3
expr $num2 + 1 &>/dev/null  #这里加1,判断输入的是不是整数。
if [ $? -ne 0 ];then  #如果不等于零,代表输入不是整数。
  echo 
  echo "Please enter a integer"
  exit 1
fi
case $num3 in
   1)
     action "Installed Nginx..." /bin/true
     sleep 2
     lnmp_menu
     ;;
   2)
    action "Installed MySQL..." /bin/true
    sleep 2
    clear
    lnmp_menu
    ;;
   3)
     action "Installed PHP..." /bin/true
     sleep 2
     clear
     lnmp_menu
     ;;
   4)
    clear
    menu
    ;;
   *)
    clear
    echo
    echo -e "\033[31mYour Enter the wrong,Please input again Choice:[1-4]\033[0m"
    lnmp_menu
esac
}
clear
menu
while true ;do
 read -p "##please Enter Your first_menu Choice:[1-4]" num1
  expr $num1 + 1 &>/dev/null   #这里加1,判断输入的是不是整数。
  if [ $? -ne 0 ];then   #如果不等于零,代表输入不是整数。
    echo "----------------------------"
    echo "|      Waring!!!           |"
    echo "|Please Enter Right Choice!|"
    echo "----------------------------"
    sleep 1
   case $num1 in
      1)
       clear
       lamp_menu
       ;;
      2)
       clear
       lnmp_menu
       ;;
      3)
       clear
       break
       ;;
      4)
       clear
       menu
       ;;
      *)
       clear
       echo -e "\033[31mYour Enter a number Error,Please Enter again Choice:[1-4]
: \033[0m"       
      menu
   esac
done

  未有写过shell?
不要紧了,其实须要分明未来,你肯定已经知晓,那太简单了。不就是语法难点吗?
你别告诉小编你不会谷歌(谷歌(Google)),不会百度!

 首先我们来新建一个test.sh文件,并在文件内输入一句用来输出的语句,如下所示。

  小编就先抛多少个必要考虑的点,前面一向给代码吧!

[root@itcast03 ~]# vim
test.sh
echo ‘123’

    1、怎么着获得当前光阴,并转换成你需求的格式? 关键词: date

封存上边的剧情,大家试着执行一下test.sh,发现会报如下所示的提示,说并没有权限履行。

    2、如何幸免同时数十二遍运作同多少个内容? 关键词: lock

[root@itcast03 ~]#
./test.sh
-bash: ./test.sh: Permission denied
[root@itcast03 ~]#

    叁、怎么样让程序运转完叁遍今后,冷却执行? 关键词: sleep

因为大家是在root用户下,我们能够动用sh
test.sh来强制执行,如下所示,发现实施成功了。