ネストされたディレクトリの作成

ネストされたディレクトリの作成

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 "$*"

関連情報