1.1. 各种判断
1.1.1. 字符串判断
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
1.1.2. 数字的判断
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
1.1.3. 文件的判断
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
1.1.4. 复杂逻辑判断
-a 与
-o 或
! 非
1.2. 条件判断
if [ $a -eq $b ]
then
echo 111
elif [ -f $path ]
echo 222
fi
在条件表达式中,等号左右可以有空格。但是在表达式外面的赋值语句中,shell是不能有空格的。
shell中的等号也很有意思,在判断语句的里面时表示判断,而在其他地方时就表示赋值了。
中括号里面的语句,离左右括号必须要有一个空格,不然判断语句不会生效。
1.3. 循环语句
for i in list
do
echo 111
done
还可以这样在in后面列出来要遍历的数据:for in $1 $2 $3
while [ $a != 0 ]
do
echo 222
done
循环语句中,遇上return则退出当前函数,返回值供函数的返回值调用。continue则退出本次循环,执行下一次循环。exit则是退出当前函数,返回函数的执行结果,供$?调用。