赞
踩
Shell 和其他编程语言一样,支持多种运算符,包括:
例如,执行以下命令可以将变量 a 和 b 的值相加,并将结果赋值给变量 c:
#!/bin/bash
a=10
b=20
c=`expr $a + $b`
echo "a + b = $c"
例如,执行以下命令可以判断变量 a 是否等于 b,如果是则输出“a 等于 b”,否则输出“a 不等于 b”:
a=10
b=20
if [ $a == $b ]; then
echo "a 等于 b"
else
echo "a 不等于 b"
fi
另外一种形式:
-eq 运算符:用于检测两个数是否相等,如果相等则返回 true。
举例:[ 2 -eq 2 ] 返回 true。
-ne 运算符:用于检测两个数是否不相等,如果不相等则返回 true。
举例:[ 2 -ne 3 ] 返回 true。
-gt 运算符:用于检测左边的数是否大于右边的数,如果是,则返回 true。
举例:[ 4 -gt 3 ] 返回 true。
-lt 运算符:用于检测左边的数是否小于右边的数,如果是,则返回 true。
举例:[ 3 -lt 4 ] 返回 true。
-ge 运算符:用于检测左边的数是否大于等于右边的数,如果是,则返回 true。
举例:[ 4 -ge 3 ] 返回 true。
-le 运算符:用于检测左边的数是否小于等于右边的数,如果是,则返回 true。
举例:[ 3 -le 4 ] 返回 true。
例如,执行以下命令可以判断变量 a 和 b 是否都为 true(即非零),如果是则输出“a 和 b 都为 true”,否则输出“a 和 b 至少有一个不为 true”:
a=10
b=20
if [ $a -ne 0 ] && [ $b -ne 0 ]; then
echo "a 和 b 都为 true"
else
echo "a 和 b 至少有一个不为 true"
fi
例如,执行以下命令可以判断字符串变量 str 是否为空,如果是则输出“字符串变量 str 为空”,否则输出“字符串变量 str 不为空”:
str=""
if [ -z $str ]; then
echo "字符串变量 str 为空"
else
echo "字符串变量 str 不为空"
fi
文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:
-b file
:检测文件是否是块设备文件,如果是,则返回 true。示例:[ -b $file ]
返回 false。-c file
:检测文件是否是字符设备文件,如果是,则返回 true。示例:[ -c $file ]
返回 false。-d file
:检测文件是否是目录,如果是,则返回 true。示例:[ -d $file ]
返回 false。-f file
:检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。示例:[ -f $file ]
返回 true。-g file
:检测文件是否设置了 SGID 位,如果是,则返回 true。示例:[ -g $file ]
返回 false。-k file
:检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。示例:[ -k $file ]
返回 false。-p file
:检测文件是否是有名管道,如果是,则返回 true。示例:[ -p $file ]
返回 false。-u file
:检测文件是否设置了 SUID 位,如果是,则返回 true。示例:[ -u $file ]
返回 false。-r file
:检测文件是否可读,如果是,则返回 true。示例:[ -r $file ]
返回 true。-w file
:检测文件是否可写,如果是,则返回 true。示例:[ -w $file ]
返回 true。-x file
:检测文件是否可执行,如果是,则返回 true。示例:[ -x $file ]
返回 true。-s file
:检测文件是否为空(文件大小是否大于 0),不为空返回 true。示例:[ -s $file ]
返回 true。-e file
:检测文件(包括目录)是否存在,如果是,则返回 true。示例:[ -e $file ]
返回 true。#!/bin/bash file="/userdata/shell_test.sh" if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi if [ -w $file ] then echo "文件可写" else echo "文件不可写" fi if [ -x $file ] then echo "文件可执行" else echo "文件不可执行" fi if [ -f $file ] then echo "文件为普通文件" else echo "文件为特殊文件" fi if [ -d $file ] then echo "文件是个▒.▒录" else echo "文件不是个▒.▒录" fi if [ -s $file ] then echo "文件不为空" else echo "文件为空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi
[root@RV1126_RV1109:/userdata]# ./shell_test.sh
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。