You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按顺序无限循环修改文件内容?定时循环替换脚本文件名方案求解

解决方案:每小时循环替换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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:07:43