创建嵌套目录

创建嵌套目录

我想编写一个bash脚本,它将获取命令行参数并在用户主目录下创建嵌套目录。例如a/b/c

mkdir -p $1/$2/$3

但我想要创建的不仅仅是三层目录,我想要获取命令行参数 3 或 5 并创建必要数量的嵌套目录

答案1

#!/bin/sh

(
    IFS=/
    mkdir -p "$*"
)

的扩展"$*"将是一个单引号字符串,由脚本的所有参数组成,并与$IFS作为分隔符的第一个字符连接在一起。这就是为什么我们也设置$IFS/.

我在子 shell 中运行它以避免IFS对脚本的其余部分进行设置(它改变了某些事物的行为,例如read工作方式)。如果脚本中没有其他内容,您可以离开()退出。

测试:

$ tree
.
`-- script.sh

0 directory, 1 file
$ ./script.sh 1 2 3 4 {a..k}
$ tree
.
|-- 1
|   `-- 2
|       `-- 3
|           `-- 4
|               `-- a
|                   `-- b
|                       `-- c
|                           `-- d
|                               `-- e
|                                   `-- f
|                                       `-- g
|                                           `-- h
|                                               `-- i
|                                                   `-- j
|                                                       `-- k
`-- script.sh

15 directories, 1 file

答案2

您可以将字段间分隔符设置$IFS/,然后"$*"将扩展为a/b/c/...

IFS=/
mkdir -p "$*"

相关内容