![명령에 대한 완벽한 응답을 기다린 다음 스크립트를 앞으로 이동합니다.](https://linux55.com/image/209991/%EB%AA%85%EB%A0%B9%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%99%84%EB%B2%BD%ED%95%9C%20%EC%9D%91%EB%8B%B5%EC%9D%84%20%EA%B8%B0%EB%8B%A4%EB%A6%B0%20%EB%8B%A4%EC%9D%8C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%95%9E%EC%9C%BC%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음 명령을 실행하기 전에 문자열과 일치하는 명령의 응답을 기다려야 하는 bash 스크립트를 만들고 있습니다. 응답을 받은 후에는 해당 응답을 변수에 할당해야 합니다.
명령은 다음과 같습니다
/bin/oci --profile $USER compute instance list-vnics --instance-id $INSTANCEOCID | grep -oP 'ocid1.vnic[^"]+'
답글은 예시로 사용됩니다.
ocid1.vnic.oc1.ap-mumbai-1.amaaaaaakfvuezyaagala7nf53zeomzarbf2h24a2lynp7sgin7ujrkr7jla
이 응답을 받은 후 나중에 스크립트에서 다음과 같이 호출할 수 있도록 변수 VNIC에 할당해야 합니다.echo $VNIC
어떻게 해야 하나요?
답변1
grep
반환합니다진짜일치하는 행이 하나 이상 발견되면 종료 상태입니다. 그래서 여기에서 할 수 있습니다:
until
VNIC=$(
/bin/oci --profile "$USER" \
compute instance list-vnics --instance-id "$INSTANCEOCID" |
grep -oP 'ocid1.vnic[^"]+'
)
do
continue # or sleep 1 or other delay to avoid running again
# straight away.
done
답변2
var=$( command )를 사용하여 명령의 stdout 출력을 var에 저장하십시오. 따라서 귀하의 경우에는 다음과 같습니다.
VNIC=$( /bin/oci --profile $USER compute instance list-vnics --instance-id $INSTANCEOCID | grep -oP 'ocid1.vnic[^"]+' )