gpt4 book ai didi

bash - 数据库转储 | gzip-$?总是设置为 0

转载 作者:行者123 更新时间:2023-12-01 00:50:07 26 4
gpt4 key购买 nike

我在一个循环中转储数据库,如果我尝试转储一个不存在的数据库,我会得到 stderr
mysqldump:出现错误:1049:选择数据库时出现未知数据库"is"
正如我所料,但是尽管出现错误 $? 始终返回 0。

我的代码如下:

for database in ${databases[@]}; do
$dumpcmd $database | gzip > "$backupdir/$database.gz"
result=$?
echo "dumped database: $database ($result)"
done

我想从 mysqldump 中检测到一个错误并将其打印到屏幕上 - 我有一种预感,这与 gzip 的管道有关,但是作为一个试图学习 bash 的 C# 开发人员,我被卡住了!

最佳答案

您想检查 PIPESTATUS 中的内容:

   PIPESTATUS
An array variable (see Arrays below) containing a list of exit
status values from the processes in the most-recently-executed
foreground pipeline (which may contain only a single command).

因此,请尝试使用 result=${PIPESTATUS[0]} 而不是 result=$?

关于bash - 数据库转储 | gzip-$?总是设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com