如何按顺序无限循环修改文件内容?定时循环替换脚本文件名方案求解
解决方案:每小时循环替换sample.sh中的脚本名
要实现按顺序循环替换,核心是跟踪当前替换的数字(sed本身不保留执行状态),结合crontab定时执行即可,具体步骤如下:
1. 创建状态跟踪文件
先建一个小文件记录当前使用的数字,避免每次都去解析sample.sh(容易因文件内其他相似字符串导致误判):
# 替换为你实际的存储路径,比如和sample.sh同目录 echo 1 > /opt/scripts/current_up_num.txt
2. 编写替换脚本
创建rotate_up.sh脚本,处理数字循环和替换逻辑:
#!/bin/bash # 替换成你实际的文件路径 SAMPLE_FILE="/opt/scripts/sample.sh" STATE_FILE="/opt/scripts/current_up_num.txt" # 读取当前数字 current=$(cat "$STATE_FILE") # 计算下一个数字:9之后回到1 next=$(( current == 9 ? 1 : current + 1 )) # 执行替换:把所有upX.sh换成upY.sh sed -i "s/up${current}\.sh/up${next}\.sh/g" "$SAMPLE_FILE" # 更新状态文件为下一个数字 echo "$next" > "$STATE_FILE"
给脚本加执行权限:
chmod +x /opt/scripts/rotate_up.sh
3. 配置crontab定时任务
编辑crontab:
crontab -e
添加每小时整点执行的任务:
0 * * * * /opt/scripts/rotate_up.sh
保存退出后,crontab就会自动每小时执行一次替换。
注意事项
- 所有路径用绝对路径,避免crontab执行时因环境变量问题找不到文件。
- 如果只需要替换第一个匹配的
upX.sh,去掉sed命令里的g标志即可。 - 确保状态文件有读写权限,避免脚本执行失败。
内容的提问来源于stack exchange,提问作者God of Money
相关产品推荐
相关产品推荐

