Создание вложенных каталогов

Создание вложенных каталогов

Я хочу написать bashскрипт, который будет получать аргумент командной строки и создавать вложенные каталоги в домашнем каталоге пользователя. Например:a/b/c

mkdir -p $1/$2/$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 "$*"

Связанный контент