修正する

修正する

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"

おすすめ記事