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