shell的if语句的各种格式

一 if语句的格式

if 条件

then

执行语句

fi

注意,最后必须用fi来闭合。无需使用{ }来包裹。

if then有两种写法,同一行时,必须有分号。独占一行时不用分号


如:

同一行

if [[ $a > $b ]] ; then
echo "111"
else
echo "00"
fi

独占一行

if [[ $a > $b ]]
then
echo "111"
else
echo "00"
fi

二 if的各种括号的写法

1、数值的比较

-eq 等于,如:if [ "$cc" -eq "$dd" ]

-ne 不等于,如:if [ "$cc" -ne "$dd" ]

-gt 大于,如:if [ "$cc" -gt "$dd" ]

-ge 大于等于,如:if [ "$cc" -ge "$dd" ]

-lt 小于,如:if [ "$a" -lt "$b" ]

-le 小于等于,如:if [ "$cc" -le "$dd" ]

使用符号是,用双括号 如:(("$cc" > "$dd"))

如:(("$a" >= "$b"))

2、字符串的比较

= 等于,如:if [ "$a" = "$b" ]

== 等于,如:if [ "$a" == "$b" ],与=等价

!= 不等于,如:if [ "$a" != "$b" ]

这个操作符将在[[]]结构中使用模式匹配.

大于,在ASCII字母顺序下.如:

if [[ "$a" > "$b" ]] 双括号无需转义

if [ "$a" \> "$b" ] 单括号要转义


注意:在单括号[]结构中">",< 等需要转义.

=和==是等价的,这个比较奇怪


以下语句是等价的,其中-a表示 and

if [ $cc -ne 1 -a $cc != 2 ]

if [ $cc -ne 1] && [ $cc != 2 ]

if [[ $cc != 1 && $cc != 2 ]]

通过以上可以看出,使用双括号时,最简单直观

上述的if的后面,括号里面的表达式都要有空格

单括号时,字符串的比较使用 = == !=

单括号时,数值的比较使用 -eq -ne -gt -ge -lt -le


双括号与双中括号的区别:

((表达式))常用于算术运算比较,双括号中的变量可以不使用$符号前缀


如:

while ((aa<100)) #数值与运算符可以没有空格,变量的使用时也可以不使用$aa
do
echo "$aa"
((aa=aa*2))
done
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章