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

Shell脚本使用mkdir创建文件夹时遭遇语法错误求助

Shell脚本使用mkdir创建文件夹时遭遇语法错误求助

嘿,我来帮你排查下这个语法错误的问题!从你给出的报错信息和代码片段来看,这里有好几个小细节没处理对,咱们一个个说清楚:

  • 循环语法不完整:Shell的for循环必须用do和done把循环体包起来,你直接在for语句后面写mkdir,解释器根本不知道这是循环的一部分,这就是你看到“unexpected token `mkdir'”的核心原因。
  • for循环的范围写法错了:你写的{1...1}是三个点,正确的范围表达式应该是两个点{1..1},三个点会被当成普通字符串,循环逻辑直接乱掉。而且你循环定义的变量是i,但后面用的是x,变量也没对应上哦。
  • 变量赋值和算术运算写错了:Shell里给变量赋值不能加$,算术运算也不能用($x + $1)这种格式,正确的写法应该是x=$((x + 1))或者let x=x+1。

给你改了个基础版的脚本示例,先实现循环创建文件夹的功能:

#!/bin/bash
# 初始化计数变量
x=1
# 这里示例循环3次,你可以把{1..3}改成你想要的范围
for i in {1..3}; do
    mkdir "folder$x"
    # 让计数变量自增
    x=$((x + 1))
done

如果你是想做递归创建文件夹(比如在folder1里再建folder2,folder2里再建folder3这种嵌套结构),可以试试递归函数的写法:

#!/bin/bash

# 定义递归创建文件夹的函数
create_nested_folders() {
    local current=$1
    local max=$2
    # 创建当前层级的文件夹
    mkdir "folder$current"
    # 进入这个文件夹,如果进入失败就退出(避免权限问题)
    cd "folder$current" || exit
    # 还没到最大层数的话,继续递归创建下一层
    if [ $current -lt $max ]; then
        create_nested_folders $((current + 1)) $max
    fi
}

# 调用函数,比如从第1层创建到第5层
create_nested_folders 1 5

备注:内容来源于stack exchange,提问作者Is Linus A Instrument

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:34:28