我想编写一个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 "$*"