今天在写Shell代码的时候碰到了一个问题。这个代码需要一个循环检测文件是否存在,如果不存在的话,就从远程下载一个文件来覆盖到本地。
下面就是我写的代码,大家可以参考一下,这个代码使用的Shell里的while循环。
#!/bin/bash # 循环判断文件是否存在 while [ ! -f /etc/yum.repos.d/CentOS-Base.repo ]; do echo "文件不存在,正在下载..." # 下载文件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.domain/CentOS/Centos-7.repo done echo "文件已存在:/etc/yum.repos.d/CentOS-Base.repo"
在执行这个代码的时候发现了一个问题,没有控制循环速度,导致被下载循环了多次,当下载时遇到延迟的时候会多次执行。
那么下面,我们将添加一个延迟函数,让这个程序等待一秒钟再进行下一次循环。代码如下:
sleep 1
现在的代码就是一个比较完善的可用的代码了。
#!/bin/bash # 循环判断文件是否存在 while [ ! -f /etc/yum.repos.d/CentOS-Base.repo ]; do echo "文件不存在,正在下载..." # 下载文件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.domain/CentOS/Centos-7.repo # 等待1秒再进行下一次检查,避免频繁请求 sleep 1 done echo "文件已存在:/etc/yum.repos.d/CentOS-Base.repo"
评论前必须登录!
注册