经过大量的尝试和错误,我终于找到了解决方案。涉及几个步骤。
格式为--parameters
The --parameters
argument 是字典类型的参数。您可以通过键入以下内容来阅读文档中的详细信息gcloud topic escaping
在 CLI 中,但简而言之,这意味着您需要一个=
之间--parameters
和参数,格式为 key=value 对,值用引号括起来 ("
):
--parameters=inputLocations="object",outputLocations="object"
逃离物体
然后,对象需要转义引号以避免过早结束该值,因此
{"location1":"gcs://bucket/whatever"...
Becomes
{\"location1\":\"gcs://bucket/whatever\"...
选择不同的分隔符
接下来,CLI 会感到困惑,因为虽然键=值对用逗号分隔,但值在对象中也有逗号。因此,您可以通过将其放在克拉之间来定义不同的分隔符(^
) 在参数的开头和键=值对之间:
--parameters=^*^inputLocations="{"\location1\":\"...\"}"*outputLocations="{"\location1\":\"...\"}"
I used *
因为;
不起作用 - 也许是因为它标志着 CLI 命令的结束?谁知道。
另请注意,gcloud topic escaping
信息说:
在 Windows 上的 cmd.exe 和 PowerShell 中,^ 是一个特殊字符,
你必须通过重复它来逃避它。在下面的例子中,每次
你看到^,将其替换为^^^^。
别忘了customGcsTempLocation
经历了这一切之后,我忘记了customGcsTempLocation
需要添加到 key=value 对中--parameters
争论。不要忘记用一个将它与其他的分开*
并再次将其括在引号中:
...}*customGcsTempLocation="gs://bucket/whatever"
在线文档中几乎没有对此进行解释,因此我一生中的几天都不会回来 - 希望我能在这方面帮助其他人。