Shell语句
Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。
一、条件语句
(1)test命令
格式一:test 条件表达式
格式二:[ 条件表达式 ]
(2)文件测试
格式:[ 操作符 文件或目录 ]
常用的操作符:
-e:测试目录或文件是否存在(Exist)。
-d:测试是否为目录(Directory)。
-f:测试是否为文件(File)。
-r:测试当前用户是否有权限读取(Read)。
-w:测试当前用户是否有权限写入(Write)。
-x:测试是否设置有可执行(Excute)权限。
(3)整数值比较
格式:[ 整数变量1 操作符 整数变量2 ]
常用的操作符:
-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-le:小于等于
-ge:大于等于
(4)字符串比较
格式1:
[ 字符串1 = 字符串2 ] 或 [ 字符串1 == 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:
[ -z 字符串 ] #检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串
[ -n 字符串 ] #检查是否有字符串存在
(5)逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] / [[ 表达式1 操作符 表达式2 ]]
格式2:命令1 操作符 命令2
常用的操作符:
-a或&& :逻辑与,“而且”的意思,前后条件需都成立
-o或|| :逻辑或,“或者”的意思,只需前后条件中一个成立
! :逻辑否
二、if语句
(1)单分支 if 语句
if 条件测试操作
then
命令序列
fi
(2)双分支 if 语句
if 条件测试操作
then
命令序列 1
else
命令序列 2
fi
例子:
#!/bin/bash
read -p "输入性别" a
if [ $a = "男" ]
then
echo "$a 组"
else
echo "女 组"
fi
(3)多分支 if 语句
if 条件测试操作 1
then
命令序列 1
elif 条件测试操作 2
then
命令序列 2
else
命令序列 3
fi
例子:
#!/bin/bash
read -p "请输入您的分数(0-100): " z
if [ $z -ge 85 ] && [ $z -le 100 ]
then
echo "$z 分,优秀!"
elif [ $z -ge 70 ] && [ $z -le 84 ]
then
echo "$z 分,合格!"
else
echo "$z 分,不合格!"
fi
三、case语句
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
* )
默认命令序列
esac
例子:
#!/bin/bash
read -p "请输入您的分数(0-100): " w
[[ $w -ge 85 && $w -le 100 ]] && a="yx"
[[ $w -ge 70 && $w -lt 85 ]] && a="hg"
[[ $w -ge 0 && $w -lt 70 ]] && a="bhg"
case $a in
yx)
echo " 优秀!"
;;
hg)
echo "合格!"
;;
bhg)
echo "不合格!"
;;
*)
echo "输入有误!"
esac