Shell之判断

判断
  • 利用test命令的测试功能

    test -e /opt && echo "1" || echo "2"

  • 常见的测试参数

    测试参数含义语句
    -e文件名是否存在test -e filename
    -f文件名是否存在且为文件test -f filename
    -d文件名是否存在且为目录test -d filename
    -r检测文件名是否存在且具备可读权限test -r filename
    -s检测文件名是否存在且为非空文件test -s filename
    -nt/-ot判断file1是否比file2新/旧test file1 -nt/-ot file2
    -eq两数值相等test n1 -eq n2
    -ne两数不相等test n1 -ne n2
    -gtn1大于n2test n1 -gt n2
    -ltn1小于n2test n1 -lt n2
    -gen1大于等于n2test n1 -ge n2
    -len1小于等于n2test n1 -le n2
  • 判断符号[]

    • 中括号使用规则 [ "$HOME" == "$MALL" ] [ 2 -gt 1 ]; echo $?
      • 中括号内每个组件都需要有空格来分隔
      • 中括号内的变量,建议以双引号括起来
      • 中括号内的常数,建议以单引号或双引号括起来
  • shell脚本的默认变量

    /etc/init.d/network restart

    • 脚本已经针对参数设置变量名称

      /path/to/scriptnameopt1opt2opt3
      $0(脚本文件名)$1$2$3
      名称解释
      $#代表后接参数的个数
      $@代表"$1" “$2” “$3” 每个变量都是独立的
      $*代表"$1c$2c$3c$4" c为分隔字符 默认为空格
    • 实例

      # 执行可以携带参数的脚本,执行脚本后屏幕显示以下数据
      1.程序的文件名
      2.参数的个数
      3.如果参数的个数小于2,告诉用户参数数量太少
      4.全部的参数内容是什么
      5.第一个参数是什么
      6.第二个参数是什么
      
      #!/bin/bash
      # Program:
      #     Program shows the script name, parameters...
      # History:
      # 2021/5/10       Mac      First release
      echo "The script name is  ==>${0}"
      echo "Total parameter number is ==> $#"
      [ "$#" -lt 2 ] && echo "The number of parameter is less than 2. Stop here." && exit 0
      echo "Your whole parameter is  ==> '$@'"
      echo "The first parameter is ==> ${1}"
      echo "The second parameter is ==> ${2}"
      
  • if - else 条件判断式

    • 单层简单判断、多重复杂判断

      if [ 条件判断式 ];then
      	条件成立时执行语句;
      fi
      
      if [ 条件判断式 ];then
      	条件成立时执行的命令;
      else
      	条件不成立时执行的命令;
      fi
      
      if [ 条件判断式1 ];then
      	条件1成立时执行的命令;
      elif [ 条件判断式2 ];then
      	条件2成立时执行的命令;
      else
      	条件1、条件2都不成立时执行的命令
      fi
      

    案例

    携带一个参数进入脚本,如果参数是hello显示Hello,how are you? 如果没有输入参数提示用户必须输入参数;如果输入的不是hello,提示用户只能输入hello作为参数

    #!/bin/bash
    # Program:
    #     take a parameter with the script named 'hello',or...
    # History:
    # 2021/5/10       Mac      First release
    if [ "${1}" == "hello" ]; then
    	echo "Hello,how are you?"
    elif [ "${1}" == "" ]; then
    	echo "You must input parameter, like> {${0} somword}"
    else
    	echo "The only parameter is 'hello', ex> {${0} hello}"
    fi
    
  • case - esac 判断

    代码模板

    case $变量名称 in
    "第一个变量内容")
    	程序段
    	;;
    "第二个变量内容")
    	程序段
    	;;
    *)
    	不包含第一个和第二个变量内容的其他程序段
    	exit 1
    	;;
    esac
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值