使用gsutil在gcloud shell上链接bash脚本

时间:2017-09-29 21:43:39

标签: linux bash shell gcloud gsutil

我构建了一系列bash脚本来为数据管道运行BigQuery作业。这些脚本保存在Google云端存储分区中。我使用它来管道它们:

gsutil cat gs://[bucket]/[filename] | sh

基本上没有问题,如果我从命令行运行它,但一旦我尝试从bash脚本中运行此命令,我一直得到文件未找到错误?

它似乎不是PATH问题(我可能会弄错),因为在脚本中调用$ PATH会显示gsutil所在的位置。

这是权限问题吗?

我在浏览器中的谷歌云控制台shell中运行此功能。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

首先,尝试打印gsutil cat命令的输出(stdout和stderr),而不是将其输出到sh。如果您收到该命令的错误,这将有助于阐明sh抱怨的原因。 (将来,请尝试复制/粘贴发布问题时收到的确切错误消息。)

比较两次调用中gsutil version -l的输出也会有所帮助。如果这是基于身份验证的问题,您可能会看到config path(s)行的不同值。如果是这种情况,则可能是:

  • 您正在以不同于正常运行gsutil的用户身份运行脚本。 gcloud在$HOME/.config/gcloud/...下查找凭据以传递给gsutil ...例如如果您将gcloud auth login作为Bob运行,但是您将脚本作为root运行,那么gcloud会尝试查找root的凭据,而不是{{1} }的。
  • 在您的脚本中,您直接从Bob调用gsutil,而不是负责传递gcloud凭据的包装器.../google-cloud-sdk/platform/gsutil/