Bash:如何测试 mkdir 命令失败?
Posted
技术标签:
【中文标题】Bash:如何测试 mkdir 命令失败?【英文标题】:Bash: How to test for failure of mkdir command? 【发布时间】:2013-05-19 09:12:20 【问题描述】:我正在编写一个 bash 脚本,并希望在其中进行可靠的错误检查。
mv
使其失败的退出状态代码很容易模拟失败。您所要做的就是移动一个不存在的文件,但它会失败。
但是对于mkdir
,我想模拟它失败。 mkdir 可能由于多种原因、磁盘问题或缺少权限而失败,但不确定如何模拟失败。
【问题讨论】:
【参考方案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
就足够了。通常您只想打印一个错误,然后在出现问题时终止。
不完全是您要求的,但也许是您想要的。
【讨论】:
以上是关于Bash:如何测试 mkdir 命令失败?的主要内容,如果未能解决你的问题,请参考以下文章
google-toolbox-for-mac iphone 单元测试:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME" 命令 /bin/sh 失败,退出代码