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"