Bash:如何测试mkdir命令的失败?

时间:2013-05-19 09:12:21

标签: bash unit-testing exit-code

我正在编写一个bash脚本,并希望在其中执行强大的错误检查。

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

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

5 个答案:

答案 0 :(得分:6)

只需使用

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

其中$?代表上一个执行命令的退出代码。

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

答案 1 :(得分:5)

if ! mkdir your_directory 2>/dev/null; then
    print_error
    exit
fi

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

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

mkdir -p new_dir ;

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

答案 4 :(得分:0)

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

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