6

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

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

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

4

5 回答 5

10

只需使用

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

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

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

于 2013-05-19T09:19:36.207 回答
7
if ! mkdir your_directory 2>/dev/null; then
    print_error
    exit
fi

或者

mkdir your_directory 2>/dev/null || { print_error; exit; }
于 2013-05-19T12:53:54.167 回答
5

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

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

于 2013-05-19T09:19:32.270 回答
3

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

mkdir -p new_dir ;

if [ -d new_dir ]
  cd new_dir && ...... anything else you want .
else 
  echo "error in directory creation ";
  exit 2 ;
fi 
于 2013-05-19T10:25:13.023 回答
1

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

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

于 2013-05-19T20:36:40.163 回答