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

Bash如何编写循环脚本自动创建当前日期下序号递增的不存在目录

原脚本逻辑错误分析
  • 循环条件逻辑完全反向:你需要的是找到第一个不存在的序号,仅创建1个目录,但原脚本的逻辑是「只要当前序号目录不存在,就创建并继续递增」:
    • 空目录场景下,i从0开始,所有序号的目录都不存在,会无限创建0、1、2...的目录,导致死循环
    • 已存在site_日期_0目录的场景下,循环初始判断就不满足,整个循环直接跳过,不会执行任何创建操作
  • 核心需求理解偏差:需求是找到当前日期下最大已存在序号+1的新目录,仅创建1个,而非批量创建所有缺失的序号目录
正确实现方案

实现思路

  1. 从序号0开始遍历,直到找到第一个不存在的对应格式目录
  2. 找到目标序号后,仅创建这一个目录即可

可用脚本

#!/bin/bash
date_str=$(date +%F)
site_prefix="site"
i=0

# 循环直到找到第一个不存在的目录序号
while [ -d "${site_prefix}_${date_str}_${i}" ]
do
    i=$((i + 1))
done

# 生成目标目录名并创建
target_dir="${site_prefix}_${date_str}_${i}"
echo "创建目录: ${target_dir}"
mkdir "${target_dir}"

验证场景

  • 无任何同格式目录:循环直接判断i=0的目录不存在,创建site_当前日期_0,符合预期
  • 已存在0-6序号的目录:循环会将i从0递增到7,判断7的目录不存在后创建site_当前日期_7,符合需求

内容的提问来源于stack exchange,提问作者user11532787

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:54:04