等待命令的完美答案,然后向前移动脚本

等待命令的完美答案,然后向前移动脚本

我正在制作一个 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 ) 将 command 的 stdout 输出存储在 var 中,因此在您的情况下:

VNIC=$( /bin/oci --profile $USER compute instance list-vnics --instance-id $INSTANCEOCID | grep -oP 'ocid1.vnic[^"]+' )

相关内容