文章目录

  • 说明
  • 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

shell脚本 判断两个mysql表结构是否一致 shell判断表是否存在_文件创建

方法二

嘿嘿 其实 单独 要验证 该文件是否存在 用方法是累赘 麻烦啊 而且我都知道固定路径了 那么也没有意义了 ! 所以 我们可以把参数定义在命令行中 这样灵活性更好,而且使用find 全局搜索 这样才有意义:

if [ $# -eq 0 ] ; then
        echo "请加上需要查询的文件名"
        exit 1
fi

find / -type f -name "$1"

if [ $? -eq 0 ] ; then
        echo "$1文件所有路径如上"
        echo "为空白则代表文件不存在"
fi

shell脚本 判断两个mysql表结构是否一致 shell判断表是否存在_当前用户_02

文件夹不存在则创建

经过实测 如果单独用 -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

shell脚本 判断两个mysql表结构是否一致 shell判断表是否存在_if语句判断文件是否存在_03