我有两个条件等待一段时间并检查目录中是否有多个文件。当这些条件之一为真时,必须执行循环,因此它是正常的 OR 逻辑语句。
预期的行为意味着如果时间经过或在目录中超过一个文件循环将结束。目前还在等待多个文件。有人能解释一下为什么我的 while 循环不能按预期工作吗?
i=1; while [ $i -le 10 ] || [ $( ls /opt/hosts/ | wc -l ) -lt 2 ]; do sleep 3 $(( i++ )); done
Run Code Online (Sandbox Code Playgroud)
不幸的是,我需要一行命令。我想知道为什么我的命令是无限循环为什么 OR 不能像应该那样工作:(我将第一个条件更改为 3)
+ echo host_name
+ i=1
+ '[' 1 -le 2 ']'
+ sleep 1 1
+ '[' 2 -le 2 ']'
+ sleep 1 2
+ '[' 3 -le 2 ']'
++ ls /opt/hosts/
++ wc -l
+ '[' 1 -lt 2 ']'
+ …
Run Code Online (Sandbox Code Playgroud)