我正在通过 bash 脚本在 chroot 中测试 debootstrap。
运行它的代码片段是:
#!/usr/bin/env bash
set -e
...
...
sudo debootstrap --verbose --arch=${ARCH} ${RELEASE} ${chroot_dir}
if [ "$?" -ne "0" ]; then
echo "debootstrap failed."
echo "See ${chroot_dir}/debootstrap/debootstrap.log for more information."
exit 1
fi
echo "debootstrap succeeded"
但是,运行脚本后,打印到终端的最后几行是:
I: Chosen extractor for .deb packages: dpkg-deb
I: Extracting adduser...
我没有看到失败或成功的消息。
chroot 中的 debootstrap 日志显示:
tar: ./usr/sbin/addgroup: Cannot create symlink to 'adduser': File exists
tar: ./usr/sbin/delgroup: Cannot create symlink to 'deluser': File exists
tar: Exiting with failure status due to previous errors
很明显,有些事情失败了。
为什么我无法在我的错误检查块中捕捉到这个?
如果您只想测试退出代码,
bash
请使用以下简单语法:其他方式不起作用的原因是因为
set -e
导致脚本在退出代码测试之前退出。有关退出值和错误捕获的进一步阅读,请参阅以下链接: