Bash If-Then-Else 예제

Bash If Then Else Example



이 강의에서는 우리가 작성하는 Bash 환경 스크립트에서 If-Then-Else 문을 사용하는 방법을 볼 것입니다. If-Then-Else 문은 일부 조건이 충족될 때 스크립트의 동작 경로를 정의하는 방법을 제공하는 유용한 도구입니다. If-Then-Else 문의 구문이 무엇인지 살펴보겠습니다.

만약일부 명령;
그 다음에그런 다음 명령;
또 다른기타 명령;
~이다

위의 명령에서 SOME-COMMANDS가 참이거나 반환 상태가 0인 경우 THEN-COMMANDS가 실행됩니다. 그렇지 않은 경우 ELSE-COMMANDS가 실행됩니다. SOME-COMMANDS에서 우리는 일반적으로 정수 형태의 문자열 비교 또는 값 비교를 수행합니다. 우리는 또한 파일과 관련된 많은 작업을 수행할 수 있습니다. 파일 기반 조건으로 작업할 때 주로 사용되는 몇 가지 기본 명령의 예를 살펴보겠습니다.

주요한 의미
[ -에게 ] FILE이 있으면 true를 반환합니다.
[-NS] FILE이 존재하고 블록 특수 파일이면 true를 반환합니다.
[-씨] FILE이 존재하고 문자 특수 파일이면 true를 반환합니다.
[ -NS ] FILE이 존재하고 디렉토리일 때 true를 반환합니다.
[ -그리고 ] FILE이 있으면 true를 반환합니다.
[ -NS ] FILE이 존재하고 일반 파일이면 true를 반환합니다.
[ -NS ] FILE이 존재하고 SGID 비트가 설정되면 true를 반환합니다.
[ -시간 ] FILE이 존재하고 심볼릭 링크인 경우 true를 반환합니다.
[-케이] FILE이 존재하고 고정 비트가 설정되면 true를 반환합니다.
[ -NS ] FILE이 존재하고 명명된 파이프(FIFO)인 경우 true를 반환합니다.
[ -NS ] FILE이 존재하고 읽을 수 있는 경우 true를 반환합니다.
[ -NS ] FILE이 존재하고 크기가 0보다 크면 true를 반환합니다.
[ -NS ] 파일 디스크립터 FD가 열려 있고 터미널을 참조할 때 true를 반환합니다.
[-유] FILE이 존재하고 SUID(사용자 ID 설정) 비트가 설정되면 true를 반환합니다.
[ -에 ] FILE이 존재하고 쓰기 가능하면 true를 반환합니다.
[-NS] FILE이 존재하고 실행 가능하면 true를 반환합니다.
[-영형] FILE이 존재하고 유효 사용자 ID가 소유한 경우 true를 반환합니다.
[ -NS ] FILE이 존재하고 유효 그룹 ID가 소유한 경우 true를 반환합니다.
[ -NS ] FILE이 존재하고 심볼릭 링크인 경우 true를 반환합니다.
[ -N ] FILE이 존재하고 마지막으로 읽은 이후 수정된 경우 true를 반환합니다.
[ -NS ] FILE이 존재하고 소켓일 때 true를 반환합니다.

THEN-COMMANDS 및 ELSE-COMMANDS는 유효한 UNIX 작업 또는 실행 가능한 프로그램일 수 있습니다. 참고 그 다음에 그리고 ~이다 명령은 스크립트의 완전히 별개의 요소로 간주되므로 세미콜론으로 구분됩니다.

If-Then-Else 간단한 예

If-Then-Else 문을 사용하는 매우 간단한 예제로 수업을 시작하겠습니다.
다음은 샘플 프로그램입니다.

예를 들면

예를 들면

다음은 스크립트를 실행할 때 표시되는 출력입니다.

$. ifelse1.sh
값은 동일!
$

명령줄 인수 사용

또한 스크립트에서 명령줄 인수를 사용하고 정의한 IF 문의 조건으로 인수 수와 값 자체를 사용할 수 있습니다. 먼저 다음 내용으로 텍스트 파일을 정의합니다.

제 이름은 LinuxHint입니다. 저는 서버, 특히 Ubuntu를 좋아합니다. 그들은 너무
종말의!

이제 텍스트 파일에 단어가 있는지 여부를 찾는 스크립트를 작성할 수 있습니다. 이제 스크립트를 정의해 보겠습니다.

던졌다 '$2에서 $1 찾기'
꽉 붙잡음 $ 1 $ 2
만약 [ $? -태어난 0 ]
그 다음에
던졌다 '$2 파일에서 $1을(를) 찾을 수 없습니다.'
또 다른
던졌다 '$2 파일에서 $1 발견.'
~이다
던졌다 '스크립트가 완료되었습니다.'

이 스크립트는 매우 동적입니다. 명령줄 자체에서 찾을 단어와 검색할 파일을 고려합니다. 이제 스크립트를 실행할 준비가 되었습니다.

. ifelse2.sh 사랑 hello.txt

다음과 같은 출력이 표시됩니다.

사랑을 찾아서~에안녕하세요.txt
사랑 발견~에 파일안녕하세요.txt입니다.
스크립트가 완료되었습니다.

명령줄 인수 수 확인

IF 문 내에서 명령에 전달된 명령줄 인수의 수를 확인하여 동일한 작업을 수행할 수도 있습니다.

세다=$ #
만약 [ ! $count -gt 1 ]
그 다음에
던졌다 주장이 부족하다'
또 다른
던졌다 '잘 했어요!'
~이다

이제 이 스크립트를 실행하면 다음 출력이 표시됩니다.

명령줄 인수

명령줄 인수

If-Then-Elif-Else 문

우리는 또한 우리가 정의한 명령을 실행하기 위해 프로그램이 취하는 결정 경로를 좁히기 위해 동일한 블록에 여러 IF 문을 가질 수 있습니다. 다음은 스크립트에서 여러 IF 문을 정의하는 구문입니다.

만약테스트 명령;
그 다음에
결과 명령;
엘리프
기타 명령;
그 다음에
다른 결과 명령;
또 다른
대체 명령;
~이다

이것은 매우 친숙해 보이고 따라하기도 쉽습니다. 트리가 작동하는 방식을 설정하는 간단한 예를 정의해 보겠습니다.

세다=$ #
만약 [ $count -eq 1 ]
그 다음에
던졌다 '하나의 인수만 찾았습니다.'
엘리프 [ $count -eq 2 ]
그 다음에
던졌다 '더 나은, 두 개의 인수가 발견되었습니다.'
또 다른
던졌다 '잘했습니다. 많은 인수가 발견되었습니다!'
~이다

이 명령으로 얻은 결과는 다음과 같습니다.

If The Elif Else 예

If The Elif Else 예

사례 문 사용

IF-ELSE 문은 결정해야 하는 옵션 목록이 많을 때 유용합니다. 그러나 결과와 정확히 일치하는 소수의 경우에만 작업을 수행하려는 경우 Bash 스크립트에서도 CASE 문을 사용할 수 있습니다. 구문은 다음과 같습니다.

사례표현~에사례1)실행 명령;
사례2)실행 명령;
사례2)실행 명령;
...)실행 명령;
*)실행 명령;
이삭

*가 있는 마지막 케이스는 기본 케이스로 작동하며 위에서 정의한 케이스 중 일치하는 케이스가 없을 때 실행됩니다.

CASE 문을 사용하여 간단한 예를 빠르게 구성해 보겠습니다.

사례 '$1' ~에
1)
던졌다 '값은 1입니다.'
;;
2)
던졌다 '값은 2입니다.'
;;
)
던졌다 '값은 3입니다.'
;;
*)
던졌다 '다른 값이 전달되었습니다.'
이삭

각 CASE 문은 ;;로 종료됩니다. (이중 세미콜론 표시). 이 명령으로 얻은 결과는 다음과 같습니다.

사례 예

사례 예

결론

이 강의에서는 우리가 정의한 Bash 스크립트에서 IF-ELSE, IF-THEN-ELIF 및 CASE 문을 사용하여 프로그램에 존재하거나 위치를 사용하여 사용자가 전달한 값을 기반으로 특정 작업을 수행하는 방법을 살펴보았습니다. 매개변수.