
我想編寫一個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 "$*"