중첩된 디렉터리 만들기

중첩된 디렉터리 만들기

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

관련 정보