您的位置:首页 > 运维架构 > Shell

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

2014-09-09 22:14 836 查看
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/sh
TIME=`date -d yesterday +%Y%m%d`
FILE="access_$TIME.log"
cd /data/nginx/logs
if [ -f "$FILE" ];then
echo "file OK"
else
echo "error $FILE" > error.log
mail -s "$FILE backup fail" test123@direwolf.net <error.log
fi
上面这个脚本是检测,日志文件是否存在,不存在想指定的邮箱发送邮件。

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

#!/bin/bash
sum=0
for var
do
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: