一、介绍
shell是一个脚本语言,就是命令行的命令自定义成自己的脚本
编写的时候以sh为后缀名
执行./或者sh 文件名
二、算术运算符
用于数字的关系运算符
-eq 相等 [ $a -eq $b ] 返回 false。
-ne 不相等 [ $a -ne $b ] 返回 true。
-gt 大于 [ $a -gt $b ] 返回 false。
-lt 小于 [ $a -lt $b ] 返回 true。
-ge 大于 [ $a -ge $b ] 返回 false。
-le 小于等于 [ $a -le $b ] 返回 true。
! 非运算 [ ! false ] 返回 true。
-o 或运算 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 与运算 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
a=100
b=50
str=("a+b=" "a-b=" "axb=" "a/b=" "a%b=")
val[0]=`expr $a + $b`
val[1]=`expr $a - $b`
val[2]=`expr $a \* $b`
val[3]=`expr $a / $b`
val[4]=`expr $a % $b`
echo "${str[0]} ${val[0]}"
echo "${str[1]} ${val[1]}"
echo "${str[2]} ${val[2]}"
echo "${str[3]} ${val[3]}"
echo "${str[4]} ${val[4]}"
if [ $a == $b ]
then
echo "a = b"
fi
if [ $a != $b ]
then
echo "a != b"
fi
三、逻辑运算
&& 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
a=100
b=50
if [[ $a -lt 100 && $b -gt 80 ]]
then
echo "ok"
else
echo "no"
fi
四、字符串运算
= 相等 [ $a = $b ] 返回 false。
!= 不相等 [ $a != $b ] 返回 true。
-z 长度是否为0 [ -z
a
]
返
回
f
a
l
s
e
。
−
n
长
度
是
否
不
为
0
[
−
n
"
a ] 返回 false。 -n 长度是否不为 0 [ -n "
a]返回false。−n长度是否不为0[−n"a" ] 返回 true。
$ 否为空 [ $a ] 返回 true。
a="hello"
b="guoguo"
if [ $a = $b ]
then
echo "a = b"
else
echo "a != b"
fi
if [ $a != $b ]
then
echo "a != b"
else
echo "a = b"
fi
if [ -z $a ]
then
echo "a = empty"
else
echo "a len > 0"
fi
if [ -n $b ]
then
echo "b len > 0"
else
echo "b = empty"
fi
if [ $a ]
then
echo "a tmpty"
else
echo "a not empty"
fi
五、文件测试运算符
1、文件类型
-b file 是否是块设备文件 [ -b $file ] 返回 false。
-c file 是否是字符设备文件 [ -c $file ] 返回 false。
-S: 判断某文件是否 socket
-d file 是否是目录 [ -d $file ] 返回 false。
-f file 是否是普通文件 [ -f $file ] 返回 true。
-p file 是否是有名管道 [ -p $file ] 返回 false。
2、标志位
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
3、权限
-r file 可读 [ -r $file ] 返回 true。
-w file 可写 [ -w $file ] 返回 true。
-x file 可执行 [ -x $file ] 返回 true。
-s file 是否为空(文件大小是否大于0 [ -s $file ] 返回 true。
-e file 是否存在 [ -e $file ] 返回 true。
4、其他
-L: 是否存在并且是一个符号链接