我构建了一系列bash脚本来为数据管道运行BigQuery作业。这些脚本保存在Google云端存储分区中。我使用它来管道它们:
gsutil cat gs://[bucket]/[filename] | sh
基本上没有问题,如果我从命令行运行它,但一旦我尝试从bash脚本中运行此命令,我一直得到文件未找到错误?
它似乎不是PATH问题(我可能会弄错),因为在脚本中调用$ PATH会显示gsutil所在的位置。
这是权限问题吗?
我在浏览器中的谷歌云控制台shell中运行此功能。任何帮助表示赞赏。
答案 0 :(得分:0)
首先,尝试打印gsutil cat
命令的输出(stdout和stderr),而不是将其输出到sh
。如果您收到该命令的错误,这将有助于阐明sh
抱怨的原因。 (将来,请尝试复制/粘贴发布问题时收到的确切错误消息。)
比较两次调用中gsutil version -l
的输出也会有所帮助。如果这是基于身份验证的问题,您可能会看到config path(s)
行的不同值。如果是这种情况,则可能是:
$HOME/.config/gcloud/...
下查找凭据以传递给gsutil ...例如如果您将gcloud auth login
作为Bob
运行,但是您将脚本作为root
运行,那么gcloud会尝试查找root
的凭据,而不是{{1} }的。Bob
调用gsutil,而不是负责传递gcloud凭据的包装器.../google-cloud-sdk/platform/gsutil/
。