【问题标题】:mkdir multiple subfolders in bash scriptbash脚本中的mkdir多个子文件夹
【发布时间】:2015-08-22 06:46:29
【问题描述】:

我有以下脚本:

#!/bin/bash
path="/parentfolder/{child_1,child_2}"
mkdir -p $path
mkdir -p /parentfolder/{child_3,child_4}

运行它会创建以下文件夹:

/parentfolder/{child_1,child_2}
/parentfolder/child_3
/parentfolder/child_4

如何让脚本创建以下文件夹结构:

/parentfolder/child_1
/parentfolder/child_2
/parentfolder/child_3
/parentfolder/child_4

【问题讨论】:

  • 手册解释了shell expansions 的工作原理。大括号扩展发生在参数(变量)扩展之前,因此参数值中的大括号不会被扩展。

标签: bash mkdir


【解决方案1】:

您不能在带引号的变量中使用大括号扩展;要么将大括号放在命令本身中,要么以不同的方式分配变量。如果您需要将值放在变量中,使用数组似乎比较合适。

#!/bin/bash

paths=(/parentfolder/{child_1,child_2,child_3,child_4})
mkdir -p "${paths[@]}"

【讨论】:

    【解决方案2】:
    path=`echo /parentfolder/{child_1,child_2}`
    

    扩展需要一个命令才能正常工作。

    【讨论】: