bash 脚本中的 mkdir 问题

mkdir issue in bash script

我正在尝试使用 mkdir 命令创建文件夹树,它应该具有以下结构:

rootfs
├── Fol1
│   ├── Fol11
│   └── Fol12
└── Fol2

我使用

成功创建了这棵树
mkdir -p /rootfs/{Fol1/{Fol11,Fol12},Fol2}

但是文件夹 rootfs 应该是可变的,这就是我尝试的原因

ROOT=/rootfs
FOLDERTREE=/{Fol1/{Fol11,Fol12},Fol2}
mkdir -p "$ROOT$FILETREE"

尽管 echo "$ROOT$FILETREE" 准确地产生 /rootfs/{Fol1/{Fol11,Fol12},Fol2} 我确实得到了错误的文件树

rootfs
└── {Fol1
    └── {Fol11,Fol12},Fol2}

我做错了什么?

变量替换结果中不处理大括号。使用:

mkdir -p "$ROOT"/{Fol1/{Fol11,Fol12},Fol2}

您可以使用 BASH 数组将所有目录路径保留为:

dirs=( "${ROOT}"/{Fol1/{Fol11,Fol12},Fol2} )

然后将其创建为:

mkdir -p "${dirs[@]}"