当前位置:  开发笔记 > 编程语言 > 正文

检查目录是否不存在

如何解决《检查目录是否不存在》经验,为你挑选了1个好方法。

我编写了一个脚本来检查var/log目录,它会获取其中的所有目录并检查这些目录中是否有归档目录.如果存档目录不存在,我想创建它,但是一旦创建它,​​脚本就会尝试再次创建它.

vdir=$(sudo sh -c "find /var/log/ -maxdepth 1 -type d ! -name "archive"" )
for i in $vdir ;do
    echo $i
    if [[ ! -d $i/$arc ]];then
        sudo sh -c "mkdir $i/$arc"
        echo "$date:$HN:Creating:$i/$arc:directory" >> logrotation.log
    fi
done

当我执行上面的代码时,它给了我这个错误.似乎脚本没有检查条件.

mkdir: cannot create directory ‘/var/log/speech-dispatcher/archive’: File exists

Wes Hardaker.. 19

问题是你有两个[符号.你只需要一个:

          if [ ! -d $i/$arc ];then

另外一点:某些shell版本不能处理;右括号旁边的版本.因此,我建议像这样格式化以获得最佳兼容性:

          if [ ! -d $i/$arc ] ; then

编辑:既然以上对你没有帮助,更多的想法:

您的脚本也可能无法实际读取$i目录的内容,因此测试将始终失败(或实际成功).但是,当您通过sudo以root身份创建目录时,它已经存在.

[在sudo下运行整个脚本而不仅仅是某些部分也会更有效.]



1> Wes Hardaker..:

问题是你有两个[符号.你只需要一个:

          if [ ! -d $i/$arc ];then

另外一点:某些shell版本不能处理;右括号旁边的版本.因此,我建议像这样格式化以获得最佳兼容性:

          if [ ! -d $i/$arc ] ; then

编辑:既然以上对你没有帮助,更多的想法:

您的脚本也可能无法实际读取$i目录的内容,因此测试将始终失败(或实际成功).但是,当您通过sudo以root身份创建目录时,它已经存在.

[在sudo下运行整个脚本而不仅仅是某些部分也会更有效.]

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有