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

Shell脚本创建带前导零编号目录异常问题求解

解决Shell脚本中{01..13}展开丢失前导零的问题

问题原因

脚本执行时使用的Shell与终端默认Shell不一致。比如脚本开头指定#!/bin/sh(POSIX标准Shell),而终端用的是bash——POSIX sh不支持带前导零的大括号序列扩展,bash则支持该特性,导致两种场景下执行结果不同。

解决办法

  • 指定脚本用bash执行
    修改脚本的Shebang行(第一行)为:

    #!/bin/bash
    

    之后脚本会调用bash运行,mkdir -p test/file{01..13}就能正确生成带前导零的目录。

  • 兼容POSIX sh的写法(用seq命令)
    如果需要脚本在纯sh环境下运行,可借助seq -w生成带前导零的编号,循环创建目录:

    for num in $(seq -w 1 13); do
        mkdir -p "test/file${num}"
    done
    

    -w参数会自动补零,让所有编号保持相同宽度。

  • 兼容POSIX sh的写法(用printf格式化)
    通过printf将数字格式化为两位带前导零的字符串:

    for i in {1..13}; do
        num=$(printf "%02d" "$i")
        mkdir -p "test/file${num}"
    done
    

    %02d表示输出两位十进制数,不足两位时用零填充。

内容的提问来源于stack exchange,提问作者Morek Povíšil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:53:10