qmya00 发表于 2018-8-29 10:43:59

shell脚本工具之条件测试

  测试文件属性:
  -b file         --是否为块设备
  -c file         --是否为字符设备
  -r file         --文件是否只读
  -w file         --文件是否可写
  -x file         --文件是否可执行
  -s file         --文件长度大于0为真
  -d file         --文件是否为一个目录
  -f file         --是否为普通文件
  -e file         --文件是否存在
  # cat 1.sh
  #!/bin/bash
  echo "---------------------"
  read -p '请输入一个目录:' ab
  if [ -d $ab ];then
  echo "此文件是一个目录:$ab"
  elif [ -f $ab ];then
  echo "此文件是一个文件:$ab"
  else
  echo "不是文件也不是目录,请重新输入"
  fi
  echo "----------------------"
  # ./1.sh
  ---------------------
  请输入一个目录:qw
  不是文件也不是目录,请重新输入
  ----------------------
  # ./1.sh
  ---------------------
  请输入一个目录:install.log
  此文件是一个文件:install.log
  ----------------------
  # ./1.sh
  ---------------------
  请输入一个目录:innotop-1.9.0
  此文件是一个目录:innotop-1.9.0
  ----------------------
  #
  测试数值:
  n1 -eq n2            --n1等于n2
  n1 -ne n2            --n1不等于n2
  n1 -gt n2            --n1大于n2
  n1 -lt n2            --n1小于n2
  n1 -ge n2            --n1大于等于n2
  n1 -le n2            --n1小于等于n2
  # cat 1.sh
  #!/bin/bash
  echo "---------------------"
  read -p '输入两个数比较大小:' a b
  if [ $a -gt $b ];then
  echo "第一个数:$a大于第二个数:$b"
  elif [ $a -lt $b ];then
  echo "第二个数:$b大于第一个数:$a"
  elif [ $a -ne $b ];then
  echo "两个数相等$a,$b"
  else
  echo "输入的数有问题"
  fi
  echo "----------------------"
  # ./1.sh
  ---------------------
  输入两个数比较大小:12 23
  第二个数大于第一个数
  ----------------------
  # vim 1.sh
  # ./1.sh
  ---------------------
  输入两个数比较大小:12 23
  第二个数:23大于第一个数:12
  ----------------------
  # ./1.sh
  ---------------------
  输入两个数比较大小:23 12
  第一个数:23大于第二个数:12
  ----------------------
  # ./1.sh
  ---------------------
  输入两个数比较大小:12 12
  输入的数有问题
  ----------------------
  # ./1.sh
  ---------------------
  输入两个数比较大小:dwf w
  ./1.sh: line 4: [: dwf: integer expression expected
  ./1.sh: line 6: [: dwf: integer expression expected
  ./1.sh: line 8: [: dwf: integer expression expected
  输入的数有问题
  ----------------------
  #
  测试字符串:
  -z s1            --字符串为空
  -n s1            --字符串不为空
  s1=s2            --字符串相等
  s1!=s2         --字符串不相等
  s1               --是否为空串
  # cat 1.sh
  #!/bin/bash
  echo "---------------------"
  read -p '请输入两个字符串:' a b
  if [ -z $a ] || [ -z $b ] ;then
  echo "字符串不能为空"
  elif [ $a = $b ];then
  echo "字符串相等"
  else
  echo "不是字符串,请重新输入"
  fi
  echo "----------------------"
  # ./1.sh
  ---------------------
  请输入两个字符串:a s
  不是字符串,请重新输入
  ----------------------
  # ./1.sh
  ---------------------
  请输入两个字符串:a a
  字符串相等
  ----------------------
  # ./1.sh
  ---------------------
  请输入两个字符串:2 f
  不是字符串,请重新输入
  ----------------------
  #
  测试逻辑算符:
  -a          --与
  -o          --或
  !         --非
  # cat 1.sh
  #!/bin/bash
  echo "---------------------"
  read -p '请输入两个字符串:' a b
  if [ -z $a-a-z $b ] ;then
  echo "字符串不能为空"
  elif [ $a = $b-o$a = $b ];then
  echo "字符串相等或不相等"
  else
  echo "不是字符串,请重新输入"
  fi
  echo "----------------------"
  # ./1.sh
  ---------------------
  请输入两个字符串:a s
  不是字符串,请重新输入
  ----------------------
  # ./1.sh
  ---------------------
  请输入两个字符串:a a
  字符串相等或不相等
  ----------------------
  # ./1.sh
  ---------------------
  请输入两个字符串:2 f
  不是字符串,请重新输入
  ----------------------
  #

页: [1]
查看完整版本: shell脚本工具之条件测试