判断目录或文件是否存在,-f表示判断文件,-d表示判断文件夹
1.判断文件是否存在
#!/bin/bash
NAME=/tmp/test.txt
if [ ! -f /tmp/test.txt ];then
touch $NAME
echo "$NMAE已成功创建。"
else
echo "$NAME文件已存在."
fi
2.判断目录是否存在
#!/bin/bash
NAME=/tmp/test
if [ ! -f $NAME ];then
mkdir -p $NAME
echo "$NMAE目录已成功创建。"
else
echo "$NAME目录文件已存在."
fi
判断条件和语句加-a,也可用&&,当文件和目录都不存在时,-o条件或语句也可用||,当文件或目录不存在时。
#!/bin/bash
NAME=/tmp/test
NAME2=/tmp/test.txt
if [ ! -d $NAME -a ! -f $NAME2 ];then
mkdir -p $NAME
touch $NAME2
echo "$NMAE目录已成功创建。"
echo "$NAME2文件已成功创建。"
else
echo false.
fi
( )
用于多个命令组、命令替换、初始化数组,多用于 SHELL 命令组,例如:JF=(jf1jf2 jf3),其中括号左右不保留空格;
(( ))
整 数 扩 展 、 运 算 符 、 重 定 义 变 量 值 , 算 术 运 算 比 较 , 例 如 : ((i++)) 、((i<=100)),其中括号左右不保留空格;
[ ]
bash 内部命令,[ ]与 test 是等同的,正则字符范围、引用数组元素编号,不支持+-*/数学运算符,逻辑测试使用-a、-o,通常用于字符串比较、整数比较以及数组索引,其中括号左右要保留空格;
[[ ]]
bash 程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-*/数学运算符,逻辑测试使用&&、||,通常用于字符串比较、逻辑运算符等,其中括号左右要保留空格;
{}
主要用于命令集合或者范围,例如 mkdir -p /data/201{7,8}/,其中括号左右不保留空格。
#!/bin/bash
NUM1=$1
if [ $NUM1 -ge 100 ];then
echo very goot.
else
if [ $NUM1 -ge 80 ];then
echo "good"
else
if [$NUM1 -ge 60 ];then
echo "pass"
else
if [$NUM1 -gt 0 ];then
echo "no pass"
fi
fi
fi
fi
-lt 小于 | 应用于整型比较 letter |
-gt 大于 | 应用于整型比较 greater |
-le 小于或等于 | 应用于整型比较 |
-ge 大于或等于 | 应用于整型比较 |
NGX_ARGS="--user=www --group=www --with-http_stub_status_module"
if [ $# -eq 0 ];then
echo -e "\033[32m----------------------\033[0m"
echo -e "\033[32mUsage:{/bin/sh $0 1.12.2|1.26.1|help}\033[0m"
exit 127
fi
$#表示输入参数个数,exit 127表示状态码为127,执行结果如下
添加如下判断语句,判断是否安装了依赖环境和库文件,当执行结果小于2时安装依赖环境、库文件rpm -qa|grep gcc,判断是否安装gcc,执行结果为2条,则统计结果为2,rpm -qa|grep gcc|wc -l,统计执行结果具体数值
因为之前一键安装Nginx脚本存在,只要执行就要安装依赖环境、库文件的操作,加入以下判断条件,当文件已存在时,不需安装,直接进行下一步
CHECK_NUM=$(rpm -qa|grep gcc|wc -l)
if [ $CHECK_NUM -lt 2 ];then
#提前解决Nginx编译所需依赖环境、库文件
yum install -y gcc tar make pcre-devel zlib-devel openssl-devel
else
echo "依赖和库文件已经存在,跳过安装,进行下一步"
fi
执行结果如下
加入以下判断,是否已经安装nginx软件,如果安装将不再安装,退出执行
执行结果如下