我编写简单的 bash 脚本并运行它:
#!/bin/bash
set -e
bq load --replace ...
我得到这个错误:
ERROR: permission denied for table message
WRITING LINES: 0
正如我们所看到的,我们得到了一个与访问相关的明显错误。为什么脚本以 0 代码结束?
真的在使用gcloud或bq(以及其他 google-family cli utils)时需要在 bash 中写入 catch 错误吗?
此方法有效并成功“中断”错误执行:
#!/bin/bash
set -e
function error() {
exitcode=$1
shift
echo "ERROR: exited with level $exitcode, error was '$@'" >&2
kill -s TERM $TOP_PID
}
bq load --replace ...
responseCode=$?
if [[ $responseCode -eq 1 ]]; then
error 1
fi
这对我来说很重要,我在 Kubernetes (cronjob) 中运行脚本。谢谢