고쳐 쓰다

고쳐 쓰다

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"

관련 정보