gpt4 book ai didi

bash - 在循环中运行命令直到超时,然后导出变量

转载 作者:行者123 更新时间:2023-12-04 10:55:10 24 4
gpt4 key购买 nike

我试图在 bash 中运行一个命令直到它成功,但用超时来限制它。这里的问题是我使用的是子shell,因此主shell无法获得正确的值:

timeout 10m bash -c 'until vm_ip=$( openstack server show f530d850-e255-4c5e-b984-43c4143a751b -c addresses --format value | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" ); do sleep 30; done'

有了这个,我试图获取虚拟机的 IP,直到它超时。我希望能够使用 vm_ip在这个命令之后。

最佳答案

似乎只需将结果打印到 stdout 就足够了并将其捕获到目标 shell 中的变量:

vm_ip="$( timeout 10m bash -c 'until vm_ip_internal=$( openstack server show f530d850-e255-4c5e-b984-43c4143a751b -c addresses --format value | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" ); do sleep 30; done; echo "$vm_ip_internal"' )"
echo "$vm_ip"

关于bash - 在循环中运行命令直到超时,然后导出变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59252354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com