我在脚本中创建存档,如果由于某种原因失败,我想执行一些操作。
检查错误情况的代码如下所示:
if ! sudo tar -zcf "/not/existing/dest.tar.gz" "/existing/archive/src/"; then
echo "Tar failed"
fi
echo "Tar exited with error code $?"
这导致以下输出:
tar (child): /not/existing/dest.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
Tar exited with error code 0
为什么tar退出代码0,即使它明显失败了?
更多信息:
OS: Ubuntu 16.04
tar --version: tar(GNU tar)1.28
sudo --version:版本1.8.16
答案 0 :(得分:1)
$?
从最后执行的命令中获取其值。
在上一个echo
中,它从之前的echo
开始,当然这是正确执行的。
if ! sudo tar -zcf "/not/existing/dest.tar.gz" "/existing/archive/src/"; then
echo "Tar failed" # if it fails
fi # |
echo "Tar exited with error code $?" # |
# ^^_____| it comes here