【发布时间】:2018-11-06 17:58:35
【问题描述】:
Linux:Red Hat Enterprise Linux Server 6.5 版(圣地亚哥)
BASH:GNU bash,版本 4.1.2(1)-release (x86_64-redhat-linux-gnu)
我刚刚配置的一个 VM 仍在等待 DNS 更新它的节点条目,并且一个节点有一个 NAS,它安装在 /project_support 文件夹中。访问 /project_support 文件夹大约需要 5-10 分钟,是的,我知道。
为了我的自动化不会因为这个问题而中断,并且我不想添加一个常量 sleep NNN,我使用了 until 循环,以便在安装挂载并且 /project_support 文件夹可用之前,我想休眠 5 秒并检查文件夹是否存在,然后再继续执行自动化脚本/逻辑。
为什么第一个 until 循环在继续执行条件检查时没有退出,当 cd 命令对给定文件夹成功又名退出状态 0? 第二个直到作为预期的。
对于第二个 until 循环,即使我创建了文件夹(从第二个终端,while until 循环正在运行),它仍然不会中断 until 循环。
[root@nukaserver01 ~]# cd /project_support; echo $?
0
[root@nukaserver01 project_support]# pwd
/project_support
[root@nukaserver01 project_support]# until [ `cd /project_support` ]; do echo '-- sleep 5'; sleep 5; done
-- sleep 5
-- sleep 5
-- sleep 5
^C
[root@nukaserver01 project_support]# until [ `cd /project_support-I-DONT-EXIST-AT-ALL` ]; do echo '-- sleep 5'; sleep 5; done
-bash: cd: /project_support-I-DONT-EXIST-AT-ALL: No such file or directory
-- sleep 5
-bash: cd: /project_support-I-DONT-EXIST-AT-ALL: No such file or directory
-- sleep 5
^C
[root@nukaserver01 project_support]#
为什么当我这样做时这个问题得到解决:?
直到 [ `cd /project_support && pwd` ];做 ...; ...;完成
【问题讨论】:
标签: linux bash loops break until-loop