shell脚本编程中条件判断语句中各个参数的含义

来源:互联网 发布:淘宝灵异事件 编辑:程序博客网 时间:2024/05/29 18:54

Linux下条件判断语句的格式如下:(ps:这里需要特别注意的是,条件与“[”与“]”之间有空格,if与"["之间也需要空格)。

if  [ condition1 ]then     if  [ condition2 ]     then       ...     else      ...      fi      command strings;else      command strings;fi

文件的判断的表达式:

if [ -parameter file ]

文件相关参数的含义:

-r file     用户可读为真-w file     用户可写为真-x file     用户可执行为真-f file      文件为正规文件为真-d file     文件为目录为真-c file     文件为字符特殊文件为真-b file     文件为块特殊文件为真-s file     文件大小非0时为真-t file     当文件描述符(默认为1)指定的设备为终端时为真

逻辑判断的表达式为:

if [ $1 -parameter $2 ]

逻辑判断参数含义:

-eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])-ne —比较两个参数是否不相等-lt —参数1是否小于参数2-le —参数1是否小于等于参数2-gt —参数1是否大于参数2-ge —参数1是否大于等于参数2
下面举例说明:

#!/bin/shTIME=`date -d yesterday +%Y%m%d`FILE="access_$TIME.log"cd /data/nginx/logsif [ -f "$FILE" ];thenecho "file OK"elseecho "error $FILE" > error.logmail -s "$FILE backup fail" test123@direwolf.net <error.logfi
上面这个脚本是检测,日志文件是否存在,不存在想指定的邮箱发送邮件。

shell要实现类似于C语言或者其他高级语言实现的算术运算,需要利用expr命令。下面以一个脚本说明:

#!/bin/bashsum=0for vardo       if [ 'expr $var \>=0' =1 ]        then              echo -e "$var+\c"               sum='expr $sum + $var'        fi done echo -e "\b=$sum"
这个脚本实现的功能是,脚本读入参数,先判断是否为数字,如果为数字则进行累加。

判断文件目录存在的几个语句:

myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then  mkdir "$myPath"   fi # 这里的-d 参数判断$myPath是否存在 if [ ! -d "$myPath"]; then  mkdir "$myPath"  fi  # 这里的-f参数判断$myFile是否存在  if [ ! -f "$myFile" ]; then  touch "$myFile"   fi    # 其他参数还有-n,-n是判断一个变量是否是否有值  if [ ! -n "$myVar" ]; then  echo "$myVar is empty"   exit 0   fi   # 两个变量判断是否相等  if [ "$var1" = "$var2" ]; then  echo '$var1 eq $var2'  else  echo '$var1 not eq $var2'  fi 

判断目录是否为空:

DIR="yourpath"if [ -z "$DIR"]then    echo "empty!"else    echo "file OK!"fi

case语句判断格式入下:

  case $变量名 in                模式1)            命令序列1            ;;                模式2)            命令序列2         ;;                 *)            默认执行的命令序列     ;;             esac 



 





0 0