【问题标题】:mkdir issue in bash scriptbash 脚本中的 mkdir 问题
【发布时间】:2015-11-21 10:59:56
【问题描述】:

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

我在这里做错了什么?

【问题讨论】:

    标签: bash mkdir


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      然后将其创建为:

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

      【讨论】: