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