Skip to main content

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

리눅스(Linux) 강좌 ②- 리눅스 공부순서 ▶ http://func.kr (유월 2025)

리눅스(Linux) 강좌 ②- 리눅스 공부순서 ▶ http://func.kr (유월 2025)
Anonim

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

기본 예제

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

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

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

  • test - 이것은 당신이 비교를 수행하려한다는 것을 의미합니다.
  • 1 - 비교할 첫 번째 요소
  • -eq - 당신은 어떻게 비교하고 있습니까? 이 경우 하나의 숫자가 다른 숫자와 같은지 테스트하는 것입니다.
  • 2 - 첫 번째 요소를 비교하는 요소
  • && - 결과가 참이면 다음 명령문을 실행하십시오.
  • echo "yes"- 비교 결과가 true를 반환 할 경우 실행할 명령입니다.
  • || - 결과가 거짓 일 경우 다음 명령문을 실행하십시오.
  • echo "no"- 비교 결과가 false를 반환 할 경우 실행할 명령입니다.

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

숫자 비교

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

  • -eq - 값 1은 동일한 값 2입니다.
  • -ge - 값 1보다 크거나 값 2와 같습니다.
  • -gt - 값 1보다 값 2보다 큼
  • -le - 값 1은 값 2보다 작거나 같습니다.
  • -lt - 값 1이 값 2보다 작음
  • -ne - 값 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가 아니기 때문에 화면에 "예"표시)

텍스트 비교

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

  • = - 문자열 1은 문자열 2와 일치합니다.
  • ! = - 문자열 1과 문자열 2가 다릅니다.
  • -n - 0보다 큰 문자열 길이입니다.
  • -z - 문자열 길이가 0입니다.

예제들

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"가 표시됩니다)

파일 비교

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

  • -ef - 파일에 동일한 장치 및 inode 번호가 있는지 (동일한 파일인지)
  • -nt - 첫 번째 파일이 두 번째 파일보다 최신 파일입니까?
  • -ot - 첫 번째 파일이 두 번째 파일보다 오래된 파일입니까?
  • -b - 파일이 존재하고 블록 스페셜입니다.
  • -c - 파일이 있고 문자 특수 문자입니다.
  • -d - 파일이 있고 디렉토리입니다.
  • -e - 파일이 존재합니다.
  • -f - 파일이 있고 일반 파일입니다.
  • -g - 파일이 있고 지정된 그룹 번호를가집니다.
  • -G - 사용자 그룹에 의해 존재하고 소유자 인 파일
  • -h - 파일이 있고 심볼릭 링크입니다.
  • -k - 파일이 존재하고 스티키 비트가 설정되어 있습니다.
  • -L - -h와 동일합니다.
  • -O - ​​소유자가있는 파일이 있습니다.
  • -p - 파일이 있고 명명 된 파이프입니다.
  • -r - 파일이 있고 읽을 수 있습니다.
  • -s - 파일이 있고 크기가 0보다 큽니다.
  • -S - 파일이 있고 소켓입니다.
  • -t - 파일 디스크립터가 터미널에서 열린다.
  • -u - 파일이 있고 set-user-id 비트가 설정됩니다.
  • -w - 파일이 있고 쓰기 가능합니다.
  • -x - 파일이 있고 실행 가능합니다.

예제들

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

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

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

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

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

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

술어

  • Block special - 파일은 블록 단위로 데이터를 읽는 블록 장치입니다. 이들은 일반적으로 하드 드라이브와 같은 장치 파일입니다.
  • 특수 문자 - 파일을 쓸 때 즉시 작동하며 일반적으로 직렬 포트와 같은 장치입니다

여러 조건 비교

지금까지 모든 것이 한 가지를 다른 것으로 비교해 왔지만 두 가지 조건을 비교하려면 어떻게해야합니까?

예를 들어, 동물이 4 개의 다리가 있고 "음매"가되면 그것은 아마도 암소 일 것입니다. 단순히 4 개의 다리를 검사했다고해서 암소가 있다고 보장 할 수는 없지만 소리를 확인하는 것은 분명히합니다.

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

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

여기에서 핵심 부분은 -a가 의미하는 -a입니다. 과 .

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

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

또 다른 테스트는 두 개의 명령문을 비교하는 것이고, 어느 것이 든 사실이라면 문자열을 출력하는 것입니다. 예를 들어 "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"

개요

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