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

2015—01—28 Shell学习笔记 条件分支

2015-01-29 14:01 351 查看
条件测试举例

[ -f "$file" ] && echo 1||echo 2

[ -f "file1" -a -e "file2" ] && echo 1||echo 0 (两个存在为1)

[ -f "file1" -o -e "file2" ] && echo 1||echo 0 (一个存在为1)

[ -f "file1" ] || [ -e "file2" ]

[ 3 -ne 3 ] || {

echo "I am oldboy !"

echo "I am coming !"

exit 1

}

[ 3 -ne 3 ] || {echo "I am oldboy !"; echo "I am coming !"; exit 1; } 放在同一行需要用分号隔开

#条件不成立,后面执行多个命令在大括号里面{}

[ 3 -ne 3 ] || (echo "I am oldboy !"; echo "I am coming !"; exit 1; )

#小括号也行,最常用的是大括号

字符串:

[ -n "file" ] && echo 1||echo 0 0 (not zero)

[ -z "file" ] && echo 1||echo 0 1 (zero) 字符串比较要加双引号

[ "file" = "file1" ] = 号左右需要空格

[ "${#file1}" = "${#file2}" ] 判断字符串长度

判断文件在不在,目录在不在,并生成相应的目标文件



sh -x test.sh 查看调试过程

判断内存大小,低于100M就进行邮件报警

free -m 实际剩余内存:buffers/cache

free -m|awk '/buffer\// {print $NF}'

vim judge_system.sh

cur_memory=`free -m|awk '/buffer\// {print $NF}'`

chars="current memory is $cur_memory."

if[ "$cur_memory" -lt 100 ]

then

echo $chars

echo $chars|mail -s "$chars" (邮件主题) abc@qq.com

fi

每分钟检查:crontab -e (到结尾)添加注释

#judge_system

* * * * * /bin/sh judge_system.sh(需要路径) >&/dev/null

Shell双分支if条件语句

单分支:

if 条件

then

指令集

fi

双分支:

if 条件

then

指令集

else

指令集

fi

特殊写法:if [ -f "$file" ];then echo 1;else echo 0;fi 相当于:[ -f "$file1" ]&& echo 1||echo 0

多分支结构

if 条件

then

指令

elif 条件

then

指令

else

指令

fi

判断数的大小:

#/bin/sh

read -p "pls input two numbers:"a b

if [ a -gt b ]

then

echo "yes,$a > $b"

elif [ a -lt b ]

then

echo "yes,$a < $b"

else

echo "yes,$a = $b"

fi

#/bin/sh

a=$1

b=$2

if [ $# -ne 2 ]

then

echo "Usage:sh $0 num1 num2"

exit 1

fi

if [ $a -gt $b ]

then

echo "yes,$a > $b"

elif [ $a -lt $b ]

then

echo "yes,$a < $b"

else

echo "yes,$a = $b"

fi

(传参并且对参数进行判断)

判断字符串是否为数字:(依据把数字去掉看剩下的长度是不是0)

[ -n "`echo $num|sed 's/[0-9]//g'`" -a -n "`echo $num2|sed 's/[0-9]//g'`" ] && echo \

"两个参数都必须为数字"&& exit 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: