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"