두 디렉터리를 비교하는 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
2개의 디렉토리에 대한 비교는 여러분에게 맡기겠습니다. Bash를 배우려면 아래 Bash에 대한 무료 온라인 도서 링크를 안내해 드리겠습니다.