unix shell脚本中存在文件夹中文件的grep行时如何执行
给出以下示例:unix shell脚本中存在文件夹中文件的grep行时如何执行,shell,unix,Shell,Unix,给出以下示例: #!/bin/bash # var timeout = 5min. while ( ! grep "Start" /var/log/azure/Microsoft.Azure.Extensions.DockerExtension/{ver}/extension.log); do sleep 5 done echo "hello world" 在extension.log文件中找不到带有超时选项的行“start”时,如何更改脚本以使其循环 另外,它还应该考虑到,{ver
#!/bin/bash
# var timeout = 5min.
while ( ! grep "Start" /var/log/azure/Microsoft.Azure.Extensions.DockerExtension/{ver}/extension.log); do
sleep 5
done
echo "hello world"
在extension.log文件中找不到带有超时选项的行“start”时,如何更改脚本以使其循环
另外,它还应该考虑到,{ver}不是静态的,并且是semver版本“2.3.4”等,它应该使用现有的最高版本文件夹。除了BASH语法问题之外,其他问题都相当接近,因为条件在
(…)
中没有计算
这应该起作用:
logfile='/var/log/azure/Microsoft.Azure.Extensions.DockerExtension/{ver}/extension.log'
while ! grep -q "Start" "$logfile"; do
sleep 5
done
echo "hello world"
测试代码:
#! /bin/bash
timeout=300 #seconds
now=$(date +%s)
let deadline=now+timeout
log=/tmp/log.txt
while ( [ ! -f "$log" ] || (! grep "Start" $log) )
do
if [ $(date +%s) -gt "$deadline" ]
then
echo "Timeout"
break
fi
echo "Sleeping"
sleep 3
done
echo "Done waiting"
只需更改log
变量,它就会工作