文章目录
- 说明
- if判断的几个实例
- 判断文件是否存在
- 方法一
- 方法二
- 文件夹不存在则创建
- 查询某用户是否存在
关于shell的使用方法 可以参考博客:
说明
使用if语句判断前 需要先说明一下 参数定义规则:
- -e 判断对象是否存在
- -d 判断对象是否存在,并且为目录
- -f 判断对象是否存在,并且为常规文件
- -L 判断对象是否存在,并且为符号链接
- -h 判断对象是否存在,并且为软链接
- -s 判断对象是否存在,并且长度不为0
- -r 判断对象是否存在,并且可读
- -w 判断对象是否存在,并且可写
- -x 判断对象是否存在,并且可执行
- -O 判断对象是否存在,并且属于当前用户
- -G 判断对象是否存在,并且属于当前用户组
- -nt 判断file1是否比file2新 [ “/data/file1” -nt “/data/file2” ]
- -ot 判断file1是否比file2旧 [ “/data/file1” -ot “/data/file2” ]
- 再次提一下&&and||在if中多次判断:
- || 单方成立;
- && 双方都成立表达式。
if判断的几个实例
判断文件是否存在
方法一
注:经过实测 个别版本如果单独用 -f 判断是否存在,运行会有异常,就加个 !(非) ,测试就正常了。
#!/bin/bash
#注意 定义变量不能有空格 否则报错!!!!!!
aa=/root/test/test1.sh
if [ -f "$aa" ];then
echo "$aa文件存在"
else
echo "$aa文件不存在"
fi
方法二
嘿嘿 其实 单独 要验证 该文件是否存在 用方法是累赘 麻烦啊 而且我都知道固定路径了 那么也没有意义了 ! 所以 我们可以把参数定义在命令行中 这样灵活性更好,而且使用find 全局搜索 这样才有意义:
if [ $# -eq 0 ] ; then
echo "请加上需要查询的文件名"
exit 1
fi
find / -type f -name "$1"
if [ $? -eq 0 ] ; then
echo "$1文件所有路径如上"
echo "为空白则代表文件不存在"
fi
文件夹不存在则创建
经过实测 如果单独用 -d 判断是否存在,运行会有异常,所以我加了 !(非) ,测试就正常了,代码如下:
也可以把指定路径 改为 自定义路径,方法参考上面文件的方法二
if [ ! -d "目录路径如:/root/test" ];then
mkdir /root/test
echo "这儿也可以放任意你想实现的功能代码(包括if,for,case语句等),也比如文件创建成功以后上传文件到该目录"
else
echo "文件夹已经存在"
echo "这儿也可以放任意你想实现的功能代码(包括if,for,case语句等),也比如文件创建成功以后上传文件到该目录"
fi
查询某用户是否存在
[root@control ~]$cat test.sh
#!/bin/bash
#$#的意思是 定义个数 如果为0 则代表没有输入任何变量
if [ $# -eq 0 ] ; then
echo "请务必要跟上一个参数"
exit
fi
# -q 是不打印结果
grep -q $1 /etc/passwd
if [ $? -eq 0 ] ; then
echo "$1 用户是存在的"
else
echo "$1 用户不存在"
fi