入れ子になったディレクトリの作成

入れ子になったディレクトリの作成

bashコマンドライン引数を使用し、ユーザーのホームディレクトリの下にネストされたディレクトリを作成するスクリプトを作成したいと思います。例えばa/b/c

mkdir -p $1/$2/$3

しかし、私は3つ以上のディレクトリを作成したいと思います。コマンドライン引数3または5を使用して、必要な数の入れ子になったディレクトリを作成したいと思います。

答え1

#!/bin/sh

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

拡張は、最初の文字を区切り文字で連結して、"$*"スクリプトへのすべての引数で構成される一重引用符文字列です。$IFSこれがまさに私たち$IFSがに設定した理由です/

スクリプトの残りの部分を設定しないようにサブシェルで実行します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 "$*"

関連情報