一、这节课掌握如下几个知识点
【1】掌握if判断的写法
【2】掌握判断常用的参数
-f :判断存在文件返回true
-s :判断存在文件且不为0字节返回true
-d :判断存在目录返回true
-x :判断文件是可执行文件返回true
-z :判断变量为空返回true
-n :判断变量不为空返回true
-gt :大于
-ge :大于等于
! :非
!= :不等于
== :等于
&& :and
|| : 或
二、通过代码讲解
#!/bin/bash
#2.sh v1
#create by maoge
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
export LANG=zh_CN.UTF-8
export PATH
#【1】if的三种写法
#1.1直接进行整数判断
a=3
b=2
if [ $a > $b ];then
echo "1 yes"
fi
#1.2 效果同1.1
if (( $a>$b ));then
echo "2 true"
fi
#1.3判断命令执行的结果是否为真
echo "one" >/tmp/test.txt
if cat /tmp/test.txt|grep "one"
then
echo "3 yes"
fi
#1.4 支持正则匹配某个字符是否包含
cc="linux"
if [[ "$cc" == lin* ]];then
echo "4 yes"
fi
#1.5 判断变量是否等于某个字符串
vv="shell"
if [ "$vv" == "linux" ];then
echo "5 if"
elif [ "$vv" == "shell" ];then
echo "5 elif"
else
echo "5 else"
fi
#【2】.掌握if判断的常用参数
#2.1判断文件是否存在
if [ -f /tmp/1.txt ];then
echo "存在 /tmp/1.txt"
else
touch /tmp/1.txt
fi
#2.2判断文件是否为空
if [ -s /tmp/1.txt ];then
echo "/tmp/1.txt 文件为空"
else
echo "test" >/tmp/1.txt
fi
#2.3判断文件是否有执行权限
if [ -x /tmp/1.txt ];then
echo "有执行权限"
else
echo "没有执行权限"
fi
#2.4判断是否存在某个目录
if [ -d /tmp/testdir ];then
echo "存在目录/tmp/test"
else
mkdir -p /tmp/testdir
fi
#2.4的写法还可以这样写
[[ -d /tmp/testdir ]] || mkdir -p /tmp/testdir
#2.5判断变量是否不为空
ee="shell"
if [ -n "$ee" ];then
echo "ee 不为空变量"
else
echo "ee 是空变量"
fi
#2.6判断变量是否为空
xx=""
if [ -z "$xx" ];then
echo "xx 是空变量"
else
echo "xx 不是空变量"
fi
#2.7整数大小判断
# -gt -ge -lt -le -eq
echo "230" >/tmp/1.txt
aa=$(cat /tmp/1.txt)
if [ $aa -gt 105 ];then #大于
echo "aa dayu 105"
fi
if [ $aa -eq 230 ];then #等于
echo "aa dengyu 230"
fi
if [ $aa -lt 280 ];then #小余
echo "aa xiaoyu 280"
fi
#2.8 非 and or的判断方法
if [ ! -d /tmp/one ];then #判断不存在某个目录
echo "不存在/tmpone目录"
mkdir -p /tmp/one
fi
#10#$aa表示以10进制的形式判断大于120,或者$num小余56
num=$(cat /tmp/1.txt)
if [[ 10#$aa -gt 120 ]] || [[ 10#$num -lt 56 ]];then
echo "$aa 大于120 或者 $num 小于 56"
fi
#表示$zz不为空并且不等于"no"
if [[ -n "$zz" ]] && [[ "$zz" != "no" ]];then
echo "$zz is ok"
fi