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

Edw*_*ard 3 bash unit-testing exit-code

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

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

但是,mkdir我希望模拟它失败.mkdir可能由于多种原因,磁盘问题或缺少权限而失败,但不确定如何模拟故障.

Uro*_*327 7

只是用

mkdir your_directory/
if [ $? -ne 0 ] ; then
    echo "fatal"
else
    echo "success"
fi
Run Code Online (Sandbox Code Playgroud)

where $?代表执行的最后一个命令的退出代码.

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


par*_*ydr 5

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

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


Adr*_*rth 5

if ! mkdir your_directory 2>/dev/null; then
    print_error
    exit
fi
Run Code Online (Sandbox Code Playgroud)

要么

mkdir your_directory 2>/dev/null || { print_error; exit; }
Run Code Online (Sandbox Code Playgroud)