두 디렉터리를 비교하는 bash 스크립트를 작성 중인데 조건을 확인하는 방법을 잘 모르겠습니다.
예를 들어, 사용자가 2개 대신 1개의 인수를 입력하면(두 디렉터리를 비교하기 때문에 2개가 필요함) 오류가 발생해야 합니다. 두 인수가 모두 유효하면 디렉터리가 비교되어 파일로 출력됩니다.
답변1
처리 매개변수
스크립트 명령줄을 통해 전달된 매개변수를 처리하는 방법은 아래와 같이 매우 간단합니다. 다음 스크립트가 있다고 가정해 보겠습니다.
$ cat cmd.bash
#!/bin/bash
echo "arg1: $1"
echo "arg2: $2"
이제 인수 없이 실행합니다.
$ ./cmd.bash
arg1:
arg2:
매개변수가 1개 있습니다:
$ ./cmd.bash hi
arg1: hi
arg2:
2개의 매개변수가 있습니다:
$ ./cmd.bash hi bye
arg1: hi
arg2: bye
매개변수 확인
그런 다음 매개변수 1과 2가 유효한 디렉토리인지 확인하고 필요에 따라 종료하거나 계속할 수 있습니다. 따라서 2개의 매개변수가 디렉토리인지 확인하고 그렇지 않으면 종료하기 위해 2개의 검사를 도입합니다.
$ cat cmd.bash
#!/bin/bash
[ -d "$1" ] || exit
[ -d "$2" ] || exit
[ $# == 2 ] || exit
echo "arg1: $1"
echo "arg2: $2"
예
이러한 디렉토리가 있다고 가정해 보겠습니다.
$ mkdir d1 d2
$ ls -l
total 12
-rwxrwxr-x. 1 saml saml 89 Oct 14 23:13 cmd.bash
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d1
drwxrwxr-x. 2 saml saml 4096 Oct 14 23:14 d2
2개 디렉토리 이외의 디렉토리가 주어지면 스크립트가 직접 종료됩니다.
$ ./cmd.bash hi bye
디렉토리가 2개 있는 경우:
$ ./cmd.bash d1 d2
arg1: d1
arg2: d2
2개 이상의 매개변수를 제공하는 경우:
$ ./cmd.bash d1 d2 d3
이 두 디렉토리의 비교는 여러분에게 맡기겠습니다. Bash를 배우려면 아래 Bash에 대한 무료 온라인 도서 링크를 안내해 드리겠습니다.