Edw*_*ard 3 bash unit-testing exit-code
我正在编写一个bash脚本,并希望在其中进行强大的错误检查.
mv使其失败的退出状态代码很容易模拟故障.您所要做的就是移动一个不存在的文件,但它失败了.
但是,mkdir我希望模拟它失败.mkdir可能由于多种原因,磁盘问题或缺少权限而失败,但不确定如何模拟故障.
只是用
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/
如果目录已经存在,mkdir 将失败(除非您使用 -p),并返回错误代码1(在我的系统上),因此首先创建目录以在您自己的系统上进行测试。(虽然我认为这是所有 shell 的标准。)
或者,将父目录设为只读。
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)