コマンドへの完全な応答を待ってから、スクリプトを前に移動します。

コマンドへの完全な応答を待ってから、スクリプトを前に移動します。

次のコマンドを実行する前に、文字列に一致するコマンドの応答を待たなければならない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返す本物一致する行が 1 つ以上見つかった場合は終了状態です。だからここで行うことができます:

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[^"]+' )

関連情報