条件测试操作和条件测试语句
$?:条件判断,失败或者成功,真或者假 true false
shell脚本:0为真,true,执行成功,所有的非0都是假 false,执行失败
条件测试的命令:
格式一:
test 操作符 条件表达式
操作符:
-e exist 测试目录或者文件是否存在
-d 测试是否为目录
-f 测试是否是文件
-r 测试当前用户是否有读权限
-w 测i试当前用户是否有写权限
-x 测试当前用户是否有执行权限
test也可以
test也可以进行数值和字符串比较
字符串比较,比较的是内容是否一致
常用的比较符:
注意:以下比较符只能用于比较整数:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
第二个写法:
==
!= > < >= <=
第二种格式:
[ 条件表达式 ]
第三种方式:
[[ 条件表达式 ]] 双中括号的写法比[]的功能更加强大,可以避免歧义的出现。而且双中括号可以支持正则表达式。
逻辑测试的表达语句:-a或者&& 逻辑且 前后的条件都要成立
-o或者|| 逻辑或 前后成立一个即可
! 逻辑否 取反
定位:1:17:00
if语句:
单分支结构:
if [ 条件测试语句 ]
then
命令序列
fi
双分支结构:
if [ 条件测试语句 ]
then
命令序列
else
命令序列
fi
课堂测试
我有3个ip地址,以位置变量的方式传参,ping通的打印可以通,保存到/opt/host.txt,不通的要打印ping不通
#!/bin/bash
ping -c 3 $1
if [ $? -eq 0 ]
then
echo “$1 online”
$1 >> /opt/hosts
else
echo “$1 is offline”
fi
#!/bin/bash
read -p “请输入一个数字:” num
if [ $ num -gt 10 ]
then
echo " $ num大于10"
echo “$num” > /opt/nim.txt
else
echo “比10小”
fi
#!/bin/bash
read -p “请输入一个数字:” num
if [[ $ num%2 == -eq 0 ]]
then
echo “$num是偶数”
else
echo “是奇数”
fi
#!/bin/bash
read -p “输入成绩:” cj
if [ $cj -eq $cj ]
then
if [[ $cj -ge 85 && $cj -le 100 ]]
then
echo “优秀”
elif [[ $cj -ge 70 && $cj -le 84 ]]
then
echo “一般”
elif [[ $cj -ge 60 && $cj -le 69 ]]
then
echo “及格”
else
echo “15遍”
fi
else
echo “你输入的不是一个整数”
fi
if [条件表达式 ]
then
命令序列
elif [ 条件表达式 ]
then
命令序列
else
命令序列
fi
定位:2:50:00
if的嵌套语句:
if []
if []
if判断的case语句:
case 变量值 in
模式1)
命令序列
;;
模式2)
命令序列
;;
*)
命令序列
esac
1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
#!/bin/bash
read -p “请输入文件名:” file
if [[ KaTeX parse error: Expected 'EOF', got '&' at position 22: …= "test.sh" ]] &̲>/dev/null then…file && -x ~/$file ]]
then
echo “文件存在,并且具有执行权限”
else
echo “文件存在,但不具有执行权限”
else
“文件不存在,请确认输入是否正确!”
fi
2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,
如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别。
男生进男生组,女生进女生组,如果输入错误请提示错误(整数判断,小数判断。9.72 3.21 )
#!/bin/bash
read -p “请输入秒数:” s
if ! [[
s
=
[
0
−
9
]
+
s =~ ^[0-9]+
s= [0−9]+ ]] &> /dev/null
then
echo “输入错误!请输入整数!”
exit 1
fi
if [[ $s -gt 0 && $s -le 10 ]]
then
read -p “请输入性别:” gender
if [[ $gender == “male” ]]
then
echo “恭喜你!进入男生组选拔赛!”
elif [[ $gender == “female” ]]
then
echo “恭喜你!进入女生组选拔赛!”
else
echo “输入错误!”
fi
else
echo “淘汰!”
fi
3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
tar -zxvf tar -jxvf
#!/bin/bash
read -p"请输入文件名:" file
case “$ file” in
*,tar.gz )
tar -zxvf “$ file” -C /opt
;;
*.tar .bz2 )
tar -jxvf “$file” -C /opt
;;
*)
echo"错误:无法识别该文件类型!"
;;
esac
4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。判断范围0-100。
#!/bin/bash
read -p “请输入1-100以内的整数:” num
if [[ $ num =~ ^ [0-9]+$ ]]
then
if [[ $ num -ge 1 && $num -le 100 ]]
then
echo " $num"
else
echo “输入的整数不属于1-100范围内”
fi
else
echo “输入错误!请输入整数!”
fi