一 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