【问题标题】:Bash: How to test for failure of mkdir command?Bash:如何测试 mkdir 命令失败?
【发布时间】:2013-05-19 09:12:20
【问题描述】:

我正在编写一个 bash 脚本,并希望在其中进行可靠的错误检查。

mv 使其失败的退出状态代码很容易模拟失败。您所要做的就是移动一个不存在的文件,但它会失败。

但是对于mkdir,我想模拟它失败。 mkdir 可能由于多种原因、磁盘问题或缺少权限而失败,但不确定如何模拟失败。

【问题讨论】:

    标签: bash unit-testing exit-code


    【解决方案1】:

    随便用

    mkdir your_directory/
    if [ $? -ne 0 ] ; then
        echo "fatal"
    else
        echo "success"
    fi
    

    其中$? 代表最后执行的命令的退出代码。

    要创建父目录,当这些不存在时,运行mkdir -p parent_directory/your_directory/

    【讨论】:

      【解决方案2】:
      if ! mkdir your_directory 2>/dev/null; then
          print_error
          exit
      fi
      

      mkdir your_directory 2>/dev/null || { print_error; exit; }
      

      【讨论】:

        【解决方案3】:

        如果目录已经存在,mkdir 将失败(除非您使用-p),并返回错误代码1(在我的系统上),因此首先创建目录以在您自己的系统上测试它。 (尽管我认为这是所有 shell 的标准配置。)

        或者,将父目录设为只读。

        【讨论】:

          【解决方案4】:

          在您的脚本中,您还可以检查新目录 ....

          mkdir -p new_dir ;
          
          if [ -d new_dir ]
            cd new_dir && ...... anything else you want .
          else 
            echo "error in directory creation ";
            exit 2 ;
          fi 
          

          【讨论】:

            【解决方案5】:

            如果你很懒,在脚本开头写一个简单的set -e 就足够了。通常您只想打印一个错误,然后在出现问题时终止。

            不完全是您要求的,但也许是您想要的。

            【讨论】:

              猜你喜欢
              • 2017-01-11
              • 2019-06-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-01-07
              • 1970-01-01
              • 2021-05-28
              • 2019-11-13
              相关资源
              最近更新 更多