Bash에서 조건부 논리를 마스터하는 방법

Basheseo Jogeonbu Nonlileul Maseuteohaneun Bangbeob



조건부 논리의 사용은 모든 프로그래밍 언어에서 매우 중요한 부분입니다. 조건부 논리는 프로그래밍 문제를 해결하기 위해 다양한 방식으로 Bash에서 구현될 수 있습니다. 문자열과 숫자 값을 비교하기 위한 다양한 유형의 'if' 및 'case' 문을 통해 Bash에서 조건부 논리를 사용하고, 변수 내용을 확인하고, 파일 또는 디렉터리의 존재 여부를 확인하는 방법이 이 튜토리얼에 나와 있습니다. .

콘텐츠 목록:

  1. 'If' 문 사용
  2. 'If-Else' 문 사용
  3. 'If-Elif-Else' 문 사용
  4. 'If' 문을 사용하여 빈 변수 확인
  5. 논리 연산자와 함께 'If' 문 사용
  6. 중첩된 'If' 문 사용
  7. 'If' 문을 사용하여 파일 존재 확인
  8. 'If' 문을 사용하여 디렉터리 존재 확인
  9. Regex와 함께 'If' 문 사용
  10. '사례' 진술의 사용

'If' 문 사용

이 예는 Bash에서 'if' 문의 간단한 사용을 보여줍니다. Bash에서는 숫자 값을 비교하는 데 6가지 유형의 비교 연산자를 사용할 수 있습니다. 이는 '-eq'(같음), '-ne'(같지 않음), '-le'(같지 않음), '-ge'(같음보다 큼), '-lt'(보다 작음) 및 '입니다. -gt”(보다 큼). '-lt' 및 '-eq'의 사용은 숫자가 99보다 작거나 '-lt' 연산자를 사용하여 확인되지 않았는지 여부를 다음 스크립트에 표시합니다. 숫자는 짝수 또는 홀수이며 '-eq' 연산자로 확인됩니다.







#!/bin/bash

#숫자 값 할당

( ( 숫자 = 오십 ) )

#'if' 문을 사용하여 숫자값을 확인합니다.

만약에 [ $번호 -lt 99 ]

그 다음에

에코 '번호가 유효합니다.'

BE

#짝수인지 아닌지 확인해보세요

만약에 [ $ ( ( $번호 % 2 ) ) -eq 0 ]

그 다음에

에코 '숫자는 짝수야.'

BE

산출 :



이전 스크립트를 실행하면 다음 출력이 나타납니다.



  p1





맨 위로 이동

'If-Else' 문 사용

'if-else' 문의 사용은 다음 스크립트에 나와 있습니다. 사용자로부터 문자열 값을 가져와서 'if-else' 문을 사용하여 값이 'BLUE'인지 여부를 확인합니다.



#!/bin/bash

#사용자로부터 문자열 값을 가져옵니다.

읽다 -피 '좋아하는 색상을 입력하세요:' 색상

#'if-else' 문을 사용하여 문자열 값을 확인합니다.

만약에 [ ${색상^^} == '파란색' ]

그 다음에

에코 '괜찮습니다. 블루 색상도 가능합니다.'

또 다른

에코 ' $color 사용할 수 없습니다.'

BE

산출 :

'red'를 입력으로 사용하는 경우 이전 스크립트를 실행한 후 다음 출력이 나타납니다.

  p2-1

'blue'가 입력으로 사용되는 경우 이전 스크립트를 실행한 후 다음 출력이 나타납니다.

  p2-2

맨 위로 이동

'If-Elif-Else' 문 사용

'if-elif-else' 문의 사용은 다음 스크립트에 나와 있습니다. 사용자로부터 숫자를 가져와 일치하는 항목이 발견될 때까지 다른 값으로 확인합니다. 일치하는 항목이 있으면 해당 메시지가 인쇄됩니다. 일치하는 항목이 없으면 기본 메시지가 인쇄됩니다.

#!/bin/bash

#사용자로부터 ID 값을 가져옵니다.

읽다 -피 '일련번호를 입력하세요:' 연속물

#'if-elif-else' 문을 사용하여 입력값을 확인합니다.

만약에 [ $ 직렬 == '4523' ]

그 다음에

에코 '당신은 A그룹에 선정되었습니다.'

엘리프 [ $ 직렬 == '8723' ]

그 다음에

에코 '당신은 B그룹에 선정되었습니다.'

엘리프 [ $ 직렬 == '3412' ]

그 다음에

에코 '당신은 C그룹에 선정되었습니다.'

또 다른

에코 '당신은 선택되지 않았습니다' .

BE

산출:

값 8723으로 스크립트를 실행하면 다음 출력이 나타납니다.

  p3-1

값이 9078인 스크립트를 실행하면 다음 출력이 나타납니다.

  p3-2

맨 위로 이동

'If' 문을 사용하여 빈 변수 확인

if 문을 사용하지 않고 변수가 비어 있는지 확인하는 방법은 다음 스크립트와 같습니다. 이 작업을 수행하기 위해 'if' 문에서 '-z' 옵션이 사용됩니다.

#!/bin/bash

#사용자로부터 ID 값을 가져옵니다.

읽다 -피 '일련번호를 입력하세요:' 연속물

#변수가 비어 있는지 확인

만약에 [ ! -와 함께 $ 직렬 ]

그 다음에

#'if-elif-else' 문을 사용하여 입력값을 확인합니다.

만약에 [ $ 직렬 == '690' ]

그 다음에

에코 '당신은 1팀에 선발되었습니다.'

엘리프 [ $ 직렬 == '450' ]

그 다음에

에코 '당신은 2팀에 선발되었습니다.'

또 다른

에코 '당신은 선택되지 않았습니다' .

BE

또 다른

에코 '일련번호가 제공되지 않습니다.'

BE

산출 :

값이 690인 스크립트를 실행하면 다음 출력이 나타납니다.

  p4-1

입력 값이 없으면 스크립트를 실행한 후 다음 출력이 나타납니다.

  p4-2

맨 위로 이동

논리 연산자와 함께 'If' 문 사용

Bash 조건문에서는 세 가지 유형의 논리 연산자를 사용할 수 있습니다. 이는 논리 OR(||), 논리 AND(&&) 및 논리 NOT(!)입니다. 사용자로부터 코드 값을 가져옵니다. 입력값이 비어 있지 않은 경우 논리 OR을 사용하여 두 개의 코드 값으로 값을 확인합니다. 값이 임의의 코드와 일치하면 해당 메시지가 인쇄됩니다. 일치하는 코드가 없으면 기본 메시지가 인쇄됩니다.

#!/bin/bash

#사용자로부터 강좌 코드를 가져옵니다.

읽다 -피 '강의 코드를 입력하세요:' 암호

#변수가 비어 있는지 확인

만약에 [ ! -와 함께 $code ]

그 다음에

#'if-elif-else' 문을 사용하여 입력값을 확인합니다.

만약에 [ [ $code == 'CSE-106' || $code == 'CSE-108' ] ]

그 다음에

에코 'CSE 과정.'

엘리프 [ [ $code == 'BBA-203' || $code == 'BBA-202' ] ]

그 다음에

에코 'BBA 과정.'

또 다른

에코 '잘못된 강좌 코드입니다.'

BE

또 다른

에코 '강좌 코드가 제공되지 않습니다.'

BE

산출 :

입력값 “CSE-108”로 스크립트를 실행하면 다음과 같은 출력이 나타납니다.

  p5-1

입력 값 'BBA-56'으로 스크립트를 실행하면 다음 출력이 나타납니다.

  p5-2

맨 위로 이동

중첩된 'If' 문 사용

'if' 조건이 다른 'if' 조건 내에 사용되는 경우 이를 중첩된 'if' 문이라고 합니다. 중첩된 'if'를 사용하는 방법은 다음 스크립트에 나와 있습니다. 사용자로부터 두 개의 마크 값을 가져옵니다. 입력 값이 비어 있지 않은 경우 첫 번째 'if' 조건은 '$theory' 값이 60보다 크거나 같은지 여부를 확인합니다. 첫 번째 'if' 조건이 'true'를 반환하면 두 번째 'if' 조건은 '$lab' 값이 50보다 크거나 같은지 여부를 확인합니다. 두 번째 'if' 조건도 'true'를 반환하면 성공 메시지가 인쇄됩니다. 그렇지 않으면 실패 메시지가 인쇄됩니다.

#!/bin/bash

#이론점수 받아가세요

읽다 -피 '이론 마크를 입력하세요:' 이론

#실험실 마크를 받아보세요

읽다 -피 '실험실 마크를 입력하세요:'

#변수가 비어 있는지 확인

만약에 [ [ ! -와 함께 $이론 && ! -와 함께 $lab ] ]

그 다음에

#중첩된 'if' 문을 사용하여 입력 값을 확인합니다.

만약에 [ $이론 -ge 60 ]

그 다음에

만약에 [ $lab -ge 오십 ]

그 다음에

에코 '당신은 합격했습니다.'

또 다른

에코 '당신은 실패했습니다.'

BE

또 다른

에코 '당신은 실패했습니다.'

BE

또 다른

에코 '이론이나 실험 마크가 비어 있습니다.'

BE

산출 :

입력 값 중 하나 또는 둘 다 비어 있으면 다음 출력이 나타납니다.

  p6-1

78을 이론 점수로, 45를 실험 점수로 선택하면 다음과 같은 출력이 나타납니다. 여기서 두 번째 'if' 조건은 'false'를 반환합니다.

  p6-2

67을 이론 점수로, 56을 실험 점수로 선택하면 다음과 같은 결과가 나타납니다. 여기서 두 'if' 조건은 모두 'true'를 반환합니다.

  p6-3

이론 점수 50점, 실험 점수 80점을 선택하면 다음과 같은 출력이 나타납니다. 여기서 첫 번째 'if' 조건은 'false'를 반환합니다.

  p6-4

맨 위로 이동

'If' 문을 사용하여 파일 존재 확인

파일의 존재는 bash 스크립트를 통해 두 가지 방법으로 확인할 수 있습니다. 하나는 '[]' 대괄호와 함께 '-f' 연산자를 사용하는 것입니다. 또 다른 방법은 'test' 명령과 '-f' 연산자를 사용하는 것입니다. 파일 이름을 가져와 '-f' 연산자와 함께 'if' 조건을 사용하여 파일의 존재를 확인합니다. 그런 다음 다른 파일 이름을 선택하고 'test' 명령 및 '-f' 연산자와 함께 'if' 문을 사용하여 파일의 존재를 확인합니다.

#!/bin/bash

#파일이름을가져가세요

읽다 -피 '파일 이름을 입력하세요:' fn1

#`test`를 사용하지 않고 파일이 존재하는지 확인하십시오.

만약에 [ -에프 $fn1 ]

그 다음에

에코 ' $fn1 파일이 존재.'

또 다른

에코 ' $fn1 파일이 없습니다.'

BE

#개행 추가

에코

#다른 파일 이름을 사용하세요

읽다 -피 '다른 파일 이름을 입력하세요:' fn2

#`test`를 사용하여 파일이 존재하는지 확인하십시오.

만약에 시험 -에프 $fn2 ; 그 다음에

에코 ' $fn2 파일이 존재.'

#`test`를 사용하여 파일이 비어 있는지 확인하십시오.

만약에 시험 -와 함께 $fn2 ; 그 다음에

에코 ' $fn2 파일이 비어있습니다.'

또 다른

에코 ' $fn2 파일이 비어 있지 않습니다.'

BE

또 다른

에코 ' $fn2 파일이 없습니다.'

BE

산출 :

'test.txt' 및 'testing.txt'를 파일 이름으로 사용하여 스크립트를 실행하면 다음 출력이 나타납니다. 출력에 따르면 두 파일이 모두 현재 위치에 존재하며 'testing.txt' 파일은 비어 있습니다.

  p7-1

'f1.txt' 및 'test.txt'를 파일 이름으로 사용하여 스크립트를 실행하면 다음 출력이 나타납니다. 출력에 따르면 'f1.txt' 파일은 현재 위치에 존재하지 않으며 'test.txt' 파일은 비어 있지 않습니다.

  p7-2

맨 위로 이동

'If' 문을 사용하여 디렉터리 존재 확인

디렉터리의 존재 여부는 파일과 마찬가지로 Bash 스크립트에서도 두 가지 방법으로 확인할 수 있습니다. 하나는 '[]' 대괄호와 함께 '-d' 연산자를 사용하는 것입니다. 또 다른 방법은 'test' 명령과 '-d' 연산자를 사용하는 것입니다. 디렉터리 이름을 가져와 '-d' 연산자와 함께 'if' 조건을 사용하여 디렉터리의 존재를 확인합니다. 그런 다음 다른 디렉터리 이름을 가져와서 'test' 명령 및 '-d' 연산자와 함께 'if' 문을 사용하여 파일의 존재를 확인합니다.

#!/bin/bash

#디렉터리 이름을 사용하세요

읽다 -피 '디렉터리 이름을 입력하세요:' 너1

#`test`를 사용하지 않고 디렉토리가 존재하는지 확인하십시오.

만약에 [ -디 $dir1 ]

그 다음에

에코 ' $dir1 디렉토리가 존재합니다.'

또 다른

에코 ' $dir1 디렉토리가 존재하지 않습니다.'

BE

#개행 추가

에코

#다른 디렉토리 이름을 사용하세요

읽다 -피 '다른 디렉토리 이름을 입력하세요:' dir2

#`test`를 사용하여 파일이 존재하는지 확인하십시오.

만약에 시험 -디 $dir2

그 다음에

에코 ' $dir2 디렉토리가 존재합니다.'

또 다른

에코 ' $dir2 디렉토리가 존재하지 않습니다.'

BE

산출 :

'temp' 및 'files' 디렉터리 이름을 사용하여 스크립트를 실행하면 다음 출력이 나타납니다. 출력에 따르면 두 디렉터리가 모두 현재 위치에 존재합니다. 그런 다음 'ls' 명령이 실행되어 디렉터리의 내용을 확인합니다.

  p8-1

'testing' 및 'new' 디렉터리 이름을 사용하여 스크립트를 실행하면 다음 출력이 나타납니다. 출력에 따르면 두 디렉터리가 모두 현재 위치에 존재하지 않습니다. 그런 다음 'ls' 명령의 출력에는 두 디렉터리가 모두 존재하지 않는 것으로 표시됩니다.

  p8-2

맨 위로 이동

Regex와 함께 'If' 문 사용

다음 스크립트는 정규식과 함께 'if' 문을 사용하여 입력 데이터의 유효성을 검사하는 방법을 보여줍니다. 여기서 두 개의 입력 값은 사용자로부터 가져와 '$bookname' 및 '$bookprice' 변수에 저장됩니다. 'if' 조건은 '$bookname' 변수에 모든 알파벳 문자가 포함되어 있고 '$bookprice'에 숫자가 포함되어 있는지 확인하기 위해 스크립트에서 사용됩니다.

#!/bin/bash

#사용자로부터 책명과 ​​가격을 알아내세요

에코 -N '책 이름을 입력하세요:'

읽다 책 이름

에코 -N '도서 가격을 입력하세요:'

읽다 장부가

#책 이름에 알파벳만 포함되어 있는지 확인하세요

만약에 ! [ [ ' $bookname ' =~ [ A-Za-z ] ] ] ; 그 다음에

에코 '도서 이름이 잘못되었습니다.'

또 다른

에코 '도서 이름이 유효합니다.'

BE

#책 가격에 숫자만 포함되어 있는지 확인하세요

만약에 ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; 그 다음에

에코 '책 가격은 숫자만 포함할 수 있습니다.'

또 다른

에코 '도서 가격이 유효합니다.'

BE

산출 :

책 이름이 'Bash 프로그래밍'이고 책 가격이 78인 입력 값을 사용하여 스크립트를 실행하면 다음 출력이 나타납니다.

  p9-1

책 이름으로 90을 입력하고 책 가격으로 'Bash'를 입력하여 스크립트를 실행하면 다음 출력이 나타납니다.

  p9-2

맨 위로 이동

'사례' 진술의 사용

'case' 문은 'if-elif-else' 문의 대안이지만 'if-elif-else' 문의 모든 작업은 'case' 문을 사용하여 수행할 수 없습니다. 'case' 문의 간단한 사용법은 다음 스크립트에 나와 있습니다. 현재 월 값으로 사용자로부터 숫자 값을 가져옵니다. 그런 다음 'case' 문에서 일치하는 값이 발견되면 해당 월이 인쇄됩니다. 그렇지 않으면 기본 메시지가 인쇄됩니다.

#!/bin/bash

#현재 월 값을 숫자로 가져옵니다.

읽다 -피 '오늘의 달을 숫자로 입력하세요:' b_월

#월 이름을 인쇄하기 전에 텍스트를 인쇄하십시오.

에코 -N '이번 달 이름은 '

#입력에 따라 일치하는 월 이름을 찾아 인쇄합니다.

사례 $b_월 ~에

1 | 01 ) 에코 '1월.' ;;

2 | 02 ) 에코 '2월.' ;;

| 03 ) 에코 '3월.' ;;

4 | 04 ) 에코 '4월.' ;;

5 | 05 ) 에코 '5월.' ;;

6 | 06 ) 에코 '6월.' ;;

7 | 07 ) 에코 '칠월.' ;;

8 | 08 ) 에코 '팔월.' ;;

9 | 09 ) 에코 '구월.' ;;

10 ) 에코 '십월.' ;;

열하나 ) 에코 '십일월.' ;;

12 ) 에코 '12월.' ;;

* ) 에코 '찾을 수 없습니다.' ;;

에삭

산출 :

값이 6인 스크립트를 실행하면 다음 출력이 나타납니다.

  p10-1

값이 09인 스크립트를 실행하면 다음 출력이 나타납니다.


  p10-2

값이 14인 스크립트를 실행하면 다음 출력이 나타납니다.

  p10-3

맨 위로 이동

결론

'if' 및 'case' 문을 사용하여 조건부 논리를 다양하게 사용하는 방법이 이 튜토리얼의 10개 예제에 나와 있습니다. 이 튜토리얼을 읽고 나면 새로운 Bash 사용자를 위해 Bash에서 조건부 논리를 사용하는 개념이 명확해집니다.