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[@]}"
我正在尝试使用 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[@]}"