---恢复内容开始---

文件测试表达式
    -f 文件存在且为普通文件
    -d 文件存在且为目录文件
    -s 文件大小不为0则真
    -e 文件存在则真
    
    -r 文件存且可读  #文件属性对于root有时不好用
    -w 写
    -x 执行
    -L 存在且为链接文件
    f1 -nt f2 f1比f2新则为真
    f1 -ot f2 f1比f2旧则为真
    这些操作符可用于[[]],[],test几乎通用,更多操作符查看man test.
    
    生产事例:
    prog="rpcbind"
    [ -f /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog  #如果存在则加载
    [ -f /etc/sysconfig/$prog ] || exit 1 #不存在退出
    
    
    事例2,大括号可执行多个命令
    [ $q -eq 3 ]&&{
    echo 1
    echo 2
    echo 3
    }
    
判断是否为整数:去掉“非数字”是否等于本身  ["`echo "123a|sed -r 's#[^0-9]##g'`" = "123a"]

#!/bin/sh
                read -p "pls input two num :" num1 num2
                a=num1
                b=num2                
                #no.1
                [ $# -ne 2 ]&&{                    #"$#"表示输入的变量个数
                    echo "usage: num1 num2"
                    exit 1
                }    
                #no.2
                ["`echo "$a"|sed -r 's#[^0-9]##g'`" = "$a" ]||{
                    echo "first arg must be int"
                    exit 2
                }
                #no.3
                [ $1 -lt $b ]&&{
                    echo "$a<$b"
                    exit 3
                }

企业综合事例:1.当用户输入1时,输出“start install lamp。” 然后执行/server/script/lamp.sh,脚本内容输出 “lamp is install”后退出脚本
              2。当用户输出2时,输出“start install lnmp。” 然后执行/server/script/lnmp.sh,脚本内容输出 “lnmp is install”后退出脚本
              3.当输入3时,退出当前菜单及脚本
              4.当输入任何其他自负,给出提示“input error”后 退出脚本
              5.要对执行的脚本进行条件判断,例如:脚本是否存在,是否可执行等。
    打印简单选择菜单示例1,
                cat <<END
                    1.wangfei
                    2.gongli
                END
                read -p "which do you like?:" a
                echo "i guess,you like $a"
    打印简单选择菜单示例2,函数写法,
                menu(){
                cat <<END
                    1.[install lamp]
                    2.[install lnmp]
                    3.[exit]
                    pls input the num you want:
                END
                }
                menu
                read num
                [ "$num" = "1" ]&&{
                    echo "start install lamp."
                    [ -x /server/script/lamp.sh ]||{
                    echo "lamp.sh error"
                    exit 2}
                    . /server/script/lamp.sh
                }
                [ "$num" = "3" ]&&{
                    echo "bye"
                    exit 0
                }
                echo "Iput Error"
                exit 1
    打印多级菜单示例:

cat << EOF
|-----------System Infomation-----------
| DATE       :$DATE
| HOSTNAME   :$HOSTNAME
| USER       :$USER
| IP         :$IPADDR
| DISK_USED  :$DISK_SDA
| CPU_AVERAGE:$cpu_uptime
----------------------------------------
|****Please Enter Your Choice:[0-5]****|
----------------------------------------
(1) Configure $SERVER1 Service
(2) Configure $SERVER2 Service
(3) Configure NETWORKE Service
(4) Change Passwd
(5) Logs
(0) Quit
EOF
read -p "Please enter your choice[0-5]: " input
case $input in
#web service
1)
clear
while [ "$flag" -eq 0 ]
do
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-3]****|
----------------------------------------
(1) Start $SERVER1 Service
(2) Stop $SERVER1 Service
(3) ReStart $SERVER1 Service
(0) Back
EOF
 read -p "Please enter your choice[0-3]: " input1
 case $input1 in
 1)
  echo -e "\n>>>>>>>>>>>$DATE Start $SERVER1">>/log.txt
  $SERVER1_START 2>>/log.txt
  if [ $? == 0 ];then
   echo "Start $SERVER1......................................................[OK]"
  else
   echo "Start $SERVER1......................................................[FAILED]"
  fi
  sleep 5
  clear
  ;;
 2) 
  echo -e "\n>>>>>>>>>>>$DATE Stop $SERVER1">>/log.txt
  $SERVER1_STOP 2>>/log.txt
  if [ $? == 0 ];then
   echo "Stop $SERVER1.......................................................[OK]"
  else
   echo "Stop $SERVER1.......................................................[FAILED]"
  fi
  sleep 5
  clear
  ;;
 3)
  echo -e "\n>>>>>>>>>>>$DATE ReStart $SERVER1">>/log.txt
  /usr/local/tdoa/php/sbin/php-fpm restart 2>>/log.txt
  $SERVER1_RESTART 2>>/log.txt
  if [ $? == 0 ];then
   echo "Restart $SERVER1....................................................[OK]"
  else
   echo "Restart $SERVER1....................................................[FAILED]"
  fi
  sleep 5
  clear
  ;;
 0)
 clear
 break
 ;;
 *) echo "----------------------------------"
    echo "|          Warning!!!            |"
    echo "|   Please Enter Right Choice!   |"
    echo "----------------------------------"

---恢复内容结束---

shell文件测试,菜单表示思想的更多相关文章

  1. Shell 文件测试运算符

    文件测试运算符 文件测试运算符用于检测 Unix 文件的各种属性. 属性检测描述如下: 操作符 说明 举例 -b file 检测文件是否是块设备文件,如果是,则返回 true. [ -b $file ...

  2. shell 文件测试 蛮全的

    文件状态测试 -b filename : 当filename 存在并且是块文件时返回真(返回0)-c filename : 当filename 存在并且是字符文件时返回真-d pathname : 当 ...

  3. (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单

    原文 (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windo ...

  4. shell运算符之 关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符

    shell运算符有很多,关系运算符,算数运算符,布尔运算符,字符串运算符和文件测试运算符 1,算术运算符 原声bash 不支持简单的算术运算,可以使用expr 工具 两点注意: 表达式和运算符之间要有 ...

  5. shell之算数运算符、逻辑运算符、关系运算符、布尔运算符、文件测试运算符

    注意事项: (1)bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用: (2)完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Es ...

  6. shell脚本中文件测试

    shell脚本中文件测试 author:headsen chen  2017-10-17  14:35:19 个人原创,转载请注明作者,否则 依法追究法律责任 [ -f  filename  ]   ...

  7. (转)shell脚本之文件测试操作符及整数比较符

    shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...

  8. 给文件右击菜单增加7-ZIP浏览功能(用注册表设置Shell调用预览命令)

    疯狂delphi delphiXE7.XE8.XE10公开课A 群号:58592705 QQ:513187410 朱建强 BAT-给文件右击菜单增加7-ZIP浏览功能 Reg给文件右击菜单增加7-ZI ...

  9. shell脚本之文件测试表达式

    1.文件测试表达式的用法 我们在编程时处理一个对象时,需要对对象进行测试,只有符合要求的才采取操作处理:这样做的好处是避免程序出错以及无所畏的消耗系统资源,这个测试的对象可以是文件.字符串.数字等. ...

随机推荐

  1. git的基本用法——我的日常使用

    git的基本用法 一,前言 网上有太多关于git的用法说明,而我看得云里雾里,可能是本人比较愚笨.平常时间老问别人又觉得很不好意思,估计大多的同学们都是自己解决.后来我想到了买一本书,淘宝上git书籍 ...

  2. 基于sklearn和keras的数据切分与交叉验证

    在训练深度学习模型的时候,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法: 使用自动切分的验证集 使用手动切分的验证集 一.自动切分 在Keras中,可以从数据集中切分出一部 ...

  3. 爬虫案例(js动态生成数据)

    需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...

  4. 深入理解Java中的同步静态方法和synchronized(class)代码块的类锁

    一.回顾学习内容 在前面几篇博客中我我们已经理解了synchronized对象锁.对象锁的重入.synchronized方法块.synchronized非本对象的代码块, 链接:https://www ...

  5. 安装jdk1.8

    这是很普通的shell的脚本,只需要注意:echo 语句内出现的变量,需要转义! #!/bin/bash function get_current_time_stamp(){ echo `date & ...

  6. python 转义字符 html 爬虫

    用python的requests包 抓取某些网页时,返回的html中,一些字段含有一些 转义字符 \\\\\\\ 这些转义字符给我们后期处理带来一些麻烦, 比方说 运行js等 python用print ...

  7. python 在一个excel存多个sheet

    import pandas as pdimport numpy as npimport osfrom sqlalchemy import create_engine def get_station_w ...

  8. 利用开源项目jadx反编译Android应用

    原文转自:http://bbs.itheima.com/thread-200475-1-1.html 利用开源项目jadx反编译Android应用 利用Github开源项目jadx可以直接对 .dex ...

  9. java初始重点语法

    第三章 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容"); ...

  10. JSP本质的理解(浏览器调试,response里面的文本都是out.write写入网络流)

    一.请求转发到一个Servlet 请求重定向后,url显示的是/abc1234这个url 这个jsp页面就是一个servlet[通过our把文本输入的网络流里面去了]