更新

更新

我正在尝试运行 bash 命令

gcloud compute ssh "instanceName" -- "sudo reboot"

使用另一个内部 bash 命令(它只给出实例的名称)

gcloud compute instances list | grep auth- | awk '{print $1}')

因此它打印auth-tqcl- 不带任何引号的实例名称。这很好。

整个命令如下所示:

 gcloud compute ssh "$(gcloud compute instances list | grep auth- | awk '{print $1}')" -- "sudo reboot"

我有错误:

值“auth-tqcl”无效。值必须与以下正则表达式匹配。

所以看起来我'在实例名称之前和之后有额外的字符'auth-tqcl'::

 gcloud compute ssh 'auth-tqcl' -- 'sudo reboot'

但是当我复制粘贴这个准备好的命令并在没有内部 bash 命令的情况下运行它时,它工作正常。

所以我的问题是:执行 bash 命令时如何摆脱多余的'内容'auth-tqcl'

$(gcloud compute instances list | grep auth- | awk '{print $1}')

在另一个 bash 命令中。

我在 mac os 中使用标准终端。

更新

这是额外报价的证明:

$ set -x; gcloud compute ssh "$(gcloud compute instances list | grep auth- | awk '{print $1}')" -- "sudo reboot"; set +x;
++(:1):  myMac $ gcloud compute instances list
++(:1):  myMac $ grep auth-
++(:1):  myMac $ awk '{print $1}'
+(:9):  myMac $ gcloud compute ssh 'auth-tqcl' -- 'sudo reboot'
ERROR: (gcloud.compute.ssh) Could not fetch resource:
 - Invalid value 'auth-tqcl'. Values must match the following regular expression: '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?'

更新2

gcloud compute instances list | grep auth-响应不带引号:

$ gcloud compute instances list | grep auth-
auth-tqcl    europe-west1-b  n1-standard-1               xx.xxx.x.x   xx.xxx.xx.xx    RUNNING

更新3

$ gcloud compute instances list | grep auth- | awk '{print $1}' | od -c
0000000  033   [   1   ;   3   7   ;   4   1   m 033   [   K   a   u   t
0000020    h   - 033   [   m 033   [   K   t   q   c   l  \n            
0000035

答案1

为了解决这个问题,我需要禁用 grep 颜色:

这有效:

gcloud compute ssh "$(gcloud compute instances list | GREP_OPTIONS= grep auth- | awk '{print $1}')" -- "sudo reboot"

相关内容