shell之if语句判断文件夹是否存在,用户是否存在


关于shell的使用方法 可以参考博客:https://blog.csdn.net/cuichongxin/article/details/101756440

说明

使用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

在这里插入图片描述

发布了98 篇原创文章 · 获赞 66 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/cuichongxin/article/details/104573296