基本运算符
a=10
b=20
- 算数运算符
- val=`expr ${a} + ${b}`
echo "a + b : ${val}" # 30
val=`expr ${a} - ${b}`
echo "a - b : ${val}" # -10
val=`expr ${a} * ${b}`
echo "a * b : ${val}" # 200
val=`expr ${b} / ${a}`
echo "b / a : ${val}" # 2
val=`expr ${b} % ${a}`
echo "b % a : ${val}" # 0
if [ ${a} == ${b} ]
then
echo "a 等于 b"
fi
if [ ${a} != ${b} ]
then
echo "a 不等于 b" #
fi
- val=`expr ${a} + ${b}`
- 关系运算符
- if [ ${a} -eq ${b} ] # 检测两个数是否相等,相等返回 true。
then
echo "${a} -eq ${b} : a 等于 b"
else
echo "${a} -eq ${b}: a 不等于 b"
fi
if [ ${a} -ne ${b} ] # 检测两个数是否相等,不相等返回 true。
then
echo "${a} -ne ${b}: a 不等于 b"
else
echo "${a} -ne ${b} : a 等于 b"
fi
if [ ${a} -gt ${b} ] # 检测左边的数是否大于右边的,如果是,则返回 true。
then
echo "${a} -gt ${b}: a 大于 b"
else
echo "${a} -gt ${b}: a 不大于 b"
fi
if [ ${a} -lt ${b} ] # 检测左边的数是否小于右边的,如果是,则返回 true。
then
echo "${a} -lt ${b}: a 小于 b"
else
echo "${a} -lt ${b}: a 不小于 b"
fi
if [ ${a} -ge ${b} ] # 检测左边的数是否大于等于右边的,如果是,则返回 true。
then
echo "${a} -ge ${b}: a 大于或等于 b"
else
echo "${a} -ge ${b}: a 小于 b"
fi
if [ ${a} -le ${b} ] # 检测左边的数是否小于等于右边的,如果是,则返回 true。
then
echo "${a} -le ${b}: a 小于或等于 b"
else
echo "${a} -le ${b}: a 大于 b"
fi
- if [ ${a} -eq ${b} ] # 检测两个数是否相等,相等返回 true。
- 布尔运算符
- if [ ${a} != ${b} ] # 非运算,表达式为 true 则返回 false,否则返回 true。
then
echo "${a} != ${b} : a 不等于 b"
else
echo "${a} != ${b}: a 等于 b"
fi
if [ ${a} -lt 100 -o ${b} -gt 100 ] # 或运算,有一个表达式为 true 则返回 true。
then
echo "${a} 小于 100 或 ${b} 大于 100 : 返回 true"
else
echo "${a} 小于 100 或 ${b} 大于 100 : 返回 false"
fi
if [ ${a} -lt 100 -a ${b} -gt 15 ] # 与运算,两个表达式都为 true 才返回 true。
then
echo "${a} 小于 100 且 ${b} 大于 15 : 返回 true"
else
echo "${a} 小于 100 且 ${b} 大于 15 : 返回 false"
fi
- if [ ${a} != ${b} ] # 非运算,表达式为 true 则返回 false,否则返回 true。
- 逻辑运算符
- if [[ ${a} -lt 100 && ${b} -gt 100 ]] # AND
then
echo "返回 true"
else
echo "返回 false"
fi
if [[ ${a} -lt 100 || ${b} -gt 100 ]] # OR
then
echo "返回 true"
else
echo "返回 false"
fi
- if [[ ${a} -lt 100 && ${b} -gt 100 ]] # AND
- 字符串运算符
- a="abc"
b="efg"
if [ ${a} = ${b} ] # 检测两个字符串是否相等,相等返回 true。
then
echo "${a} = ${b} : a 等于 b"
else
echo "${a} = ${b}: a 不等于 b"
fi
if [ ${a} != ${b} ] # 检测两个字符串是否相等,不相等返回 true。
then
echo "${a} != ${b} : a 不等于 b"
else
echo "${a} != ${b}: a 等于 b"
fi
if [ -z ${a} ] # 检测字符串长度是否为0,为0返回 true。
then
echo "-z ${a} : 字符串长度为 0"
else
echo "-z ${a} : 字符串长度不为 0"
fi
if [ -n ${a} ] # 检测字符串长度是否为0,不为0返回 true。
then
echo "-n ${a} : 字符串长度不为 0"
else
echo "-n ${a} : 字符串长度为 0"
fi
if [ ${a} ] # 检测字符串是否为空,不为空返回 true。
then
echo "${a} : 字符串不为空"
else
echo "${a} : 字符串为空"
fi
- a="abc"
- 文件测试运算符
- file="/home/donny/test.sh"
if [ -r $file ] # 检测文件是否可读,如果是,则返回 true。
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ] # 检测文件是否可写,如果是,则返回 true。
then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -x $file ] # 检测文件是否可执行,如果是,则返回 true。
then
echo "文件可执行"
else
echo "文件不可执行"
fi
if [ -f $file ] # 检测文件是否是普通文件,如果是,则返回 true。
then
echo "文件为普通文件"
else
echo "文件为特殊文件"
fi
if [ -d $file ] # 检测文件是否是目录,如果是,则返回 true。
then
echo "文件是个目录"
else
echo "文件不是个目录"
fi
if [ -s $file ] # 检测文件是否为空(文件大小是否大于0),不为空返回 true。
then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi
- file="/home/donny/test.sh"