建立嵌套目錄

建立嵌套目錄

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

相關內容