Bash 스크립트에서 테스트 조건을 사용하는 방법

이 테스트 명령은 Linux 명령 행에서 다른 요소와 비교하기 위해 사용할 수 있지만 논리 및 프로그램 흐름을 제어하는 조건문의 일부로 BASH 셸 스크립트 에서보다 일반적으로 사용됩니다.

기본 예제

터미널 창열어 이러한 명령을 간단하게 시도 할 수 있습니다.

테스트 1 -eq 2 && echo "예"|| 에코 "아니오"

위의 명령은 다음과 같이 세분화 할 수 있습니다.

본질적으로 명령은 1과 2를 비교하며 일치하는 "예"문은 "예"로 표시되고 일치하지 않으면 "아니오"문이 실행되어 "아니오"로 표시됩니다.

숫자 비교

숫자로 구문 분석하는 요소를 비교하는 경우 다음 비교 연산자를 사용할 수 있습니다.

예 :

테스트 1 -eq 2 && echo "예"|| 에코 "아니오"

(1이 2가 아니기 때문에 화면에 "no"가 표시됨)

테스트 1 -ge 2 && echo "예"|| 에코 "아니오"

(1이 2보다 크거나 같지 않으므로 화면에 "no"가 표시됨)

test 1 -gt 2 && echo "예"|| 에코 "아니오"

(1이 2보다 커서 화면에 "아니오"표시)

테스트 1 -le 2 && echo "예"|| 에코 "아니오"

(1이 2보다 작거나 같기 때문에 화면에 "예"표시)

테스트 1 -lt 2 && echo "예"|| 에코 "아니오"

(1이 2보다 작거나 같기 때문에 화면에 "예"표시)

테스트 1 - 2 && echo "예"|| 에코 "아니오"

(1이 2가 아니기 때문에 화면에 "예"표시)

텍스트 비교

문자열로 구문 분석하는 요소를 비교하는 경우 다음 비교 연산자를 사용할 수 있습니다.

예 :

test "string1"= "string2"&& echo "예"|| 에코 "아니오"

( "string1"은 "string2"와 같지 않으므로 화면에 "no"가 표시됩니다)

test "string1"! = "string2"&& echo "yes"|| 에코 "아니오"

( "string1"은 "string2"와 같지 않으므로 "yes"가 화면에 표시됩니다)

test -n "string1"&& echo "yes"|| 에코 "아니오"

"string1"의 문자열 길이가 0보다 크기 때문에 화면에 "예"라고 표시됩니다.

test -z "string1"&& echo "예"|| 에코 "아니오"

( "string1"의 문자열 길이가 0보다 크기 때문에 화면에 "no"가 표시됩니다)

파일 비교

파일을 비교하는 경우 다음 비교 연산자를 사용할 수 있습니다.

예 :

test / path / to / file1 -n / path / to / file2 && echo "예"

(file1이 file2보다 새로운 경우 "yes"라는 단어가 표시됩니다)

test -e / path / to / file1 && echo "예"

(file1이 있으면 "예"라는 단어가 표시됩니다)

test -O / path / to / file1 && echo "yes"

(file1을 소유하고 있다면 "예"라는 단어가 표시됩니다 ")

술어

여러 조건 비교

지금까지 모든 것이 한 가지를 다른 것과 비교하고 있었지만 두 가지 조건을 비교하고 싶다면 어떻게 될까요?

예를 들어, 동물의 다리가 4 개인 경우 "음매"가되면 암소가됩니다. 단순히 4 개의 다리를 검사했다고해서 암소가 있다고 보장 할 수는 없지만 확실히 소리를 확인하는 것은 아닙니다.

한 번에 두 조건을 테스트하려면 다음 문을 사용하십시오.

테스트 4 -eq 4 -a "moo"= "moo"&& echo "암소"|| 에코 "그것은 암소가 아니다"

여기에서 중요한 부분은 -a가 의미하는 -a입니다.

동일한 테스트를 수행하는 데 더 일반적으로 사용되는 방법이 더 많으며 그 방법은 다음과 같습니다.

test 4 -eq 4 && test "moo"= "moo"&& echo "그것은 암소"|| 에코 "그것은 암소가 아니다"

또 다른 테스트는 두 개의 명령문을 비교하는 것이고, 둘 중 하나가 true이면 문자열을 출력하는 것입니다. 예를 들어 "file1.txt"라는 파일이 있는지 또는 "file1.doc"라는 파일이 있는지 확인하려는 경우 다음 명령을 사용할 수 있습니다

테스트 -e file1.txt -o -e file1.doc && echo "file1 exists"|| echo "file1 does not exist"

여기서 중요한 부분은 또는를 의미하는 -o입니다.

동일한 테스트를 수행하는 데 더 일반적으로 사용되는 방법이 더 많으며 그 방법은 다음과 같습니다.

테스트 -e file1.txt || test -e file1.doc && echo "file1 exists"|| echo "file1 does not exist"

테스트 키워드 제거

비교를 수행하기 위해 실제로 test라는 단어를 사용할 필요는 없습니다. 다음과 같이 명령문을 대괄호로 묶으십시오.

[-e file1.txt] && echo "file1 exists"|| echo "file1 does not exist"

[및]은 기본적으로 테스트와 동일한 의미입니다.

이제 다음과 같이 여러 조건을 비교해 볼 수 있습니다.

[4 -eq 4] && [ "moo"= "moo"] && echo "암소입니다"|| 에코 "그것은 암소가 아니다"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists"|| echo "file1 does not exist"

개요

한 변수의 값을 다른 것으로 테스트하고 프로그램 흐름을 제어 할 수 있기 때문에 테스트 명령은 스크립트에서 더 유용합니다. 표준 명령 행에서 파일을 사용하여 파일이 존재하는지 테스트 할 수 있습니다.