#!/bin/bash
/home/user/script.sh > output.txt
VAR0=$(cat output.txt | grep -A 3 "word")
A0=$(echo $VAR0 | awk 'BEGIN { FS = "[:X]" } {printf $3}')
while [ $A0 \< 2.37 ]
do echo $A0
sleep 10
done
/home/user/script2.sh
我想要做的是在output.txt中的script.sh输出为&gt;时运行script2.sh。 2.37
问题是,script.sh的输出是动态的,因此每次循环时都必须从output.txt获取一个新输出,直到满足条件并运行script2.sh。
每次循环时如何刷新$ A0的值?
我现在得到的是$ A0永久女巫的第一个值小于2.37
在$ A0中的script.sh输出变为&gt;之前需要一些时间2.37
我已经考虑过了
/home/user/script.sh
sleep 180
/home/user/script2.sh
但是3分钟太多而且output.txt的变化可能发生在2到3分钟之间
基本上我想要的是在满足script.sh中的条件时运行scrip2.sh ...
有什么想法吗?
谢谢!
答案 0 :(得分:0)
只需将A0
的计算放在循环中,然后在A0 >= 2.37
时退出循环:
#!/bin/bash
while true ; do
/home/user/script.sh > output.txt
VAR0=$(cat output.txt | grep -A 3 "word")
A0=$(echo $VAR0 | awk 'BEGIN { FS = "[:X]" } {printf $3}')
echo $A0
if (( $(echo "$A0 >= 2.37" | bc -l) )) ; then
break
fi
sleep 10
done
/home/user/script2.sh
请注意,bash无法单独比较浮点数。你需要像
这样的黑客if (( $(echo "$A0 >= 2.37" | bc -l) )) ; then