명령에 대한 완벽한 응답을 기다린 다음 스크립트를 앞으로 이동합니다.

명령에 대한 완벽한 응답을 기다린 다음 스크립트를 앞으로 이동합니다.

다음 명령을 실행하기 전에 문자열과 일치하는 명령의 응답을 기다려야 하는 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[^"]+' )

관련 정보