码迷,mamicode.com
首页 > 系统相关 > 详细

LINUX SHELL条件判断

时间:2021-01-16 11:43:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:字符串   inux   tmp   cat   mon   sel   算术   大于等于   bing   

1、整数比较:
-eq 等于,如:if [ "$a" -eq "$b" ] 或 if [ $a -eq $b ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
== 等于,如:if if (("$a" == "$b"))
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
特别说明的是(())字符和括号之间不需要留空格,但[[ ]],[]要求比较严格,需要留空格。


2、字符串比较,上面的-eq,-nq等公式只适用于数字比较,不适用于字符比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
[[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
[[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
[ $a == z* ] # File globbing 和word splitting将会发生
[ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true


3、括号之间的区别:
[[ ]],[]对括号内变量要求严格且且敏感,但(())则相对宽松一些
[plain] view plain copy
1、if [[ $a == $b ]] 和 if [[ $a == $b ]] 等价
但if [[ $a == $b ]] 和if [[ a == b ]] 不等价
2、if (($a == $b)) 和 if (($a = $b))等价
if (($a == $b)) 和 if ((a == b)) 等价


4、多条件判断:
&&和||适用于[[ ]]和(),-a和-o适用于[]中
举例如下:
if ((i == 1)) 和 if [ "$i" == 1 ]等价
if [[ "$i" = 1 && "$j" = 2 ]] 和 if ((i = 1)) || ((j = 2))


5、其它说明:
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
< 小于,在ASCII字母顺序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]

 

算术运算的条件判断
[] [[]]:
-eq
-ne
-lt
-le
-gt
-ge(( )):><>=<==
[root@monitor ~]# if (( 2 == 3));then echo 123; fi 
[root@monitor ~]# if (( 2 >= 3));then echo 123; fi
[root@monitor ~]# if (( 2 <= 3));then echo 123; fi
123
[root@monitor ~]# if (( 2 < 3));then echo 123; fi
123
[root@monitor ~]# if (( 2 > 3));then echo 123; fi 字符串的条件判断 -z -n = == != < > 文件属性的条件判断 -f -d -c -w -L -x -e -b -r

#!/bin/bash
if [ -e demo.sh ];then
echo "文件存在"
fi


fpath="/etc/passwd"


if [ -e $fpath ];then
echo file exists;
else
echo file no exists;
fi



[ -e "/etc/hosts" ] || (echo ‘/etc/hosts not exist";exit 1)


if [ "$?" -eq 1 ];then
exit
fi


echo "/etc/hosts 文件存在"



declare -i a
a=20
if [ $a -eq 20 ];then
echo "var a 20"
fi



if [ $a -gt 10 ];then
echo ‘var >10‘;
fi



if [ "$LOGNAME" != "ROOT" ];then
echo "root "
fi



if [ "Bill" >"Apple" ];then
echo " BILL >APPLE"
fi


str="Bill"
if [ -n $str];then
echo "234"
fi


 


#!/bin/bash
NUM1=100
NUM2=200
if (($NUM1 > $NUM2));then
echo "ok"
else
echo "ok1"
fi


 


#!/bin/bash
Dir=/tmp/20140909
if [ ! -d $Dir ];then
mkdir -p $Dir
echo -e "\033[32mthis $Dir exist\033[0m"
else
echo -e "\033[32mthis $Dir is exist,please exit.\033[0m"


fi



#!/bin/bash
FILES=/tmp/test.txt
if [ -f $FILES ];then
echo "ok">>$FILES
else
cat $FILES
fi


 


-a: 逻辑表达式 -a 逻辑表达式
-o: 逻辑表达式 -o 逻辑表达式 

 

--------------------------------------实例-------------------------------------------------------------------------

suselinux:/#  echo $[ 2+1]

3

suselinux:/#  echo $((2+1))

3

suselinux:/#  ((1>2))

suselinux:/# echo $?

1

 

suselinux:/# [ 2 -ge 1]

 

suselinux:/# echo $?

0

 

 

 

LINUX SHELL条件判断

标签:字符串   inux   tmp   cat   mon   sel   算术   大于等于   bing   

原文地址:https://www.cnblogs.com/kelelipeng/p/14281548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!