我正在制作一个 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[^"]+' )