bash - 在 shell 脚本中捕获 db2 命令的返回码
问题描述
x=`su - db2inst1 -c "db2 get dbm cfg" |grep KEYSTORE_LOCATION | awk '{print $5}'`
rc="$?"
echo "${rc}"
这与 0 相呼应。
如果我强行执行错误的命令
x=`su - db2inst1 -c "db get dbm cfg" |grep KEYSTORE_LOCATION | awk '{print $5}'`
rc="$?"
echo "${rc}"
这给了我一个错误:
-bash: db: command not found
但仍然给出 0 返回码。我认为它的任务。但是我如何评估命令。
解决方案
set -o pipefail
默认情况下,管道的返回值是最后一个命令的退出代码——这里是awk '{print $5}'
. 如果任何命令失败,则打开pipefail
以使管道失败,而不仅仅是最后一个。
推荐阅读
- .htaccess - 您如何将 google 客户端 ID 从一个页面传递到另一个页面?
- c++ - 如何使用 OpenCV (c++) 存储序列中的所有帧?
- python - 为什么 matplotlib 会改变显示图像中的颜色强度?
- react-native - React Native 无限重复图像动画不同步
- python - setuptools 已安装,但我无法导入它
- javascript - 为映射的 true 或 false 值的集合返回 true/false
- migration - CircleCI 错误将配置迁移到版本 2
- regex - 如何在没有查询的情况下剥离 href 属性?
- mysql - SQL 事件 - 更新其他表后删除和更新表上的行
- vue.js - Vue:仅在以编程方式重定向到时才允许访问页面