Welcome to Our Website

Bash 스크립팅 튜토리얼-5. 명령문

If 문!

결정,결정.

소개

bash if 문이 매우 유용합니다. 이 섹션에서 우리의 Bash 스크립트 튜토리얼에서 당신은 것을 배우는 방법으로 사용할 수 있는 경우 문서 Bash 스크립트를 작업을 자동화할 수 있습니다.

If 문(및 밀접하게 관련된 사례 문)은 Bash 스크립트에서 결정을 내릴 수있게합니다. 그들은 우리가 설정할 수있는 조건에 따라 코드 조각을 실행할지 여부를 결정할 수있게합니다., If 문와 결합된 루프(살펴 다음 섹션에)만들 수 있도록 합 훨씬 더 복잡한는 스크립트를 해결할 수 있습니다 큰 작업입니다.

처럼 우리가 무엇을 보면서 이전 섹션에서 자신의 구문은 매우 특별 그래서 모든 상단에 작은 상세합니다.

기본 If 문

기본 if 문은 효과적으로 특정 테스트가 true 인 경우 주어진 일련의 동작을 수행합니다. 그것이 사실이 아니라면 그 행동을 수행하지 마십시오., 는 경우 다음과 같은 형식을 따릅니다.

경우
그리고
<명령>
fi

사이에서 무엇이든 다음과 fi(있을 경우 뒤로는)경우에만 실행됩 테스트(사이 대괄호)사실입니다.

간단한 예제를 살펴 보겠습니다.

if_example.sh

  1. #!/bin/bash
  2. #Basic if statement
  3. if
  4. then
  5. echo Hey that’s a large number.,
  6. pwd
  7. fi
  8. 날짜

그것은 인생이야:

  • 라인의 4 의 경우 먼저 명령 라인에 인수가 100 보다 큰
  • 6 호선,7-얻을 것이 실행하는 경우에 테스트선 4true 를 반환합니다. 당신은 당신이 원하는대로 여기에 많은 명령을 가질 수 있습니다.
  • 선 6-백슬래시(\)앞에 작은 따옴표(‘)이 필요로 하나의 견적서 특별한 의미 강타하고 우리가 원하지 않는 특별한 의미를 갖습니다. 백 슬래시는 특별한 의미를 벗어나 정상적인 일반 작은 따옴표로 다시 만듭니다.,
  • 라인 8-fi 는 if 문의 끝을 신호합니다. 이 이후의 모든 명령은 정상적으로 실행됩니다.
  • 10 행-이 명령은 if 문 밖에 있기 때문에 if 문의 결과에 관계없이 실행됩니다.
  1. ./if_example.sh 15
  2. 금 5 2 월 9:06:30 2021
  3. ./if_example.sh 150
  4. 이봐 그건 큰 숫자입니다.
  5. /home/라/bin
  6. 금 5Feb9:06:30 2021

그것은 항상 좋은 연습을 테스트하는 스크립트의 입력을 커버하는 다양한 시나리오는 것이 가능합니다.,

Test

위의 if 문에서 대괄호()는 실제로 명령 테스트에 대한 참조입니다. 이것은 테스트가 허용하는 모든 연산자가 여기에서도 사용될 수 있음을 의미합니다. 보 남자 페이지를 테스트하십시오 가능한 모든 사업자(있는 꽤 몇 가지)그러나 일반적인 사람은 아래에 나열되어 있습니다.나는 이것이 어떻게 작동 하는지를 알아 내려고 노력할 것입니다. 표현식

표현식은 false 입니다. -n 문자열 문자열의 길이다., -z STRING 문자열의 길이는 0 입니다(즉,비어 있음). STRING1=2 STRING1 같 2 STRING1!=2 STRING1 같지 않은 2 INTEGER1-eq INTEGER2 INTEGER1 은 수치적으로 동등한 INTEGER2 INTEGER1-gt INTEGER2 INTEGER1 는 숫자보다 큰 INTEGER2 INTEGER1-lt INTEGER2 INTEGER1 는 숫자보다 INTEGER2 -d 파일 파일이 있는 디렉토리에 있습니다.,파일이 존재하는지 확인해야합니다. -r 파일 파일이 존재하고 읽기 권한이 부여됩니다. -s 파일 파일이 존재하고 그것의 크기보다 큰 영(ie. 비어 있지 않습니다). -w 파일 파일이 존재하고 사용자에게 쓰기 권한이 부여됩니다. x 파일 파일이 존재하고 실행 권한이 부여됩니다.

주의해야 할 몇 가지 점:

  • =는-eq 와 약간 다릅니다. false 를 반환 할 것입니다=문자열 비교를 수행합니다(즉., 문자에 대한 문자 같은)반면-eq 는 수치 비교를 수행한다는 의미는 true 를 반환합니다.
  • 위의 파일을 참조 할 때 우리는 실제로 경로를 의미합니다. 경로는 절대 또는 상대적 일 수 있으며 파일이나 디렉토리를 참조 할 수 있음을 기억하십시오.
  • 기 때문에만 참조하여 명령을 테스트할 수 있습험과 문제로 촬영하 테스트에서는 명령줄을 확인하는 우리의 행동은 올바른 것입니다.
  1. 테스트 001=1
  2. 에코$?
  3. 1
  4. 테스트 001-eq1
  5. 에코$?,나는 이것이 내가 할 수있는 유일한 방법이라고 생각한다.
  6. 1
  7. ls/etc>myfile
  8. 테스트-s myfile
  9. echo$?
  10. 0

그것을 분해하자:

  • 1 행-문자열 기반 비교를 수행하십시오. 테스트는 결과를 인쇄하지 않으므로 대신 다음 줄에서 수행 할 작업 인 종료 상태를 확인합니다.
  • 2 행-변수$? 이전에 실행 한 명령의 종료 상태를 유지합니다(이 경우 테스트). 0 은 참(또는 성공)을 의미합니다. 1=거짓(또는 실패).,
  • 4 행-이번에는 수치 비교를 수행하고 있습니다.
  • 7 행-새 빈 파일 myfile 을 만듭니다(myfile 이 이미 존재하지 않는다고 가정).
  • 8 행-myfile 의 크기가 0 보다 큽니까?
  • 11 행-일부 콘텐츠를 myfile 로 리디렉션하여 크기가 0 보다 큽니다.
  • 12 행-myfile 의 크기를 다시 테스트하십시오. 이번에는 사실입니다.

들여 쓰기

위의 if 문에서 문이 true 인 경우 실행 된 명령을 들여 쓴 것을 알 수 있습니다., 이것은 들여 쓰기라고하며(Bash 스크립트뿐만 아니라 모든 언어로)훌륭하고 깨끗한 코드를 작성하는 데 중요한 부분입니다. 목표는 가독성을 향상시키고 우리가 단순하고 어리석은 실수를 저지르는 것을 어렵게 만드는 것입니다. 이 없에 관한 규칙에서 들여쓰기 강타할 수 있도록을 들여쓰기 또는지 들여쓰기 그러나 당신과 당신의 스크립트가 아직도 실행이 정확히 동일합니다. I would highly recommend 당신은 코드를 들여쓰기 그러나(특히 스크립트를 얻는 큰)그렇지 않으면 당신은 그것을 찾을 점점 더 어려워 보이 구조에서 스크립트가 있습니다.,

중첩 If 문

들여 쓰기의 이야기. 그것이 당신을 위해 인생을 더 쉽게 만들 때의 완벽한 예가 있습니다. 스크립트 내부에 필요한만큼 if 문을 가질 수 있습니다. 또한 다른 if 문 안에 if 문을 가질 수도 있습니다. 예를 들어,우리는 분석하고자하는 번호는 명령행에는 다음과 같이

그것은 인생이야:

  • 선 4-다음의 경우에만 첫 번째 명령 라인에 인수가 더 이상 100 이다.
  • 8 행-이것은 if 문에 가벼운 변형입니다., 우리가 식을 확인하고 싶다면 우리는 변수에 대해했던 것처럼 이중 괄호를 사용할 수 있습니다.
  • 10 행-if 문이 모두 true 인 경우에만 실행됩니다.

Yo dawg,나는 if 문을 좋아해서 if 문을 당신의 if 문 안에 넣었습니다.

(엑 사실을 말하지 않았지만 난 그는 것,그는 호주 내 Bash 스크립트입니다.,)

할 수 있습지는 경우 많은 문으로 당신이 좋아하지만,일반적으로는 엄지 손가락의 규칙이 필요하신 경우에는 둥지를 더 이상 3 이상 수준이 있어야 합하는지 생각해 reorganising 의 논리입니다.

If Else

때로는 문이 true 인 경우 특정 작업 집합을 수행하고 false 인 경우 다른 작업 집합을 수행하려고합니다. 우리는 다른 메커니즘으로 이것을 수용 할 수 있습니다.,

경우
그리고
<명령>
다.
<기타 명령>
fi

이제 우리는 쉽게 파일에서 읽은 경우 제공된 명령줄 인수로,다른 표준입력으로 읽는다.

else.sh

  1. #!/bin/bash
  2. #else 예
  3. 경우
  4. 그리고
  5. nl$1
  6. 다른
  7. nl/dev/stdin
  8. fi

경우 Elif 다른

때때로 우리는 일련의 조건으로 이어질 수 있는 다른 경로입니다.,

경우
그리고
<명령>
elif
그리고
<다른 명령>
다.
<기타 명령>
fi

예를 들어 있는 경우는 경우에 당신은 18 세 이상이라도 이용하실 수 있습니다. 당신이 아니지만 부모님의 편지를 가지고 있다면 당신은 갈 수 있지만 자정 전에 다시해야합니다. 그렇지 않으면 갈 수 없습니다.

원하는만큼 elif 지점을 가질 수 있습니다. 최종 다른 것도 선택 사항입니다.,

부울 연산

때로는 여러 조건이 충족되는 경우에만 무언가를하고 싶습니다. 다른 시간에 우리는 여러 조건 중 하나가 충족되면 작업을 수행하고 싶습니다. 우리는 부울 연산자로 이들을 수용 할 수 있습니다.

  • 및&&
  • 나-||

예를 들어 어쩌면 우리는 작업을 수행하려면 파일을 읽을 수 있는 크기보다 큰니다.

and.sh

  1. #!,/bin/bash
  2. #고 예
  3. 경우&&
  4. 그리고
  5. echo 이 파일은 유용합니다.
  6. fi

어쩌면 사용자가 bob 또는 andy 인 경우 약간 다른 것을 수행하고 싶을 것입니다.

or.sh

  1. #!/bin/bash
  2. #또는 예
  3. 경우||
  4. 그리고
  5. ls-alh
  6. 다른
  7. ls
  8. fi

경우 문

때때로 우리는 할 수 있는 다른 경로에 따라 변수가 일치하는 시리즈입니다., 우리는 일련의 if 및 elif 진술을 사용할 수 있지만 곧 unweildly 로 성장할 것입니다. 다행히도 물건을 더 깨끗하게 만들 수있는 사례 진술이 있습니다., It’s a little hard to explain so here are some examples to illustrate:

case <variable> in
<pattern 1>)
<commands>
;;
<pattern 2>)
<other commands>
;;
esac

Here is a basic example:

case.sh

  1. #!,/bin/bash
  2. #케이스를 들어
  3. 경우$1
  4. 시작)
  5. echo 시작
  6. ;;
  7. 중지)
  8. echo 슷
  9. ;;
  10. 시)
  11. echo 다시 시작
  12. ;;
  13. *)
  14. echo don’t know
  15. ;;
  16. esac

그것은 인생이야:

  • 선 4-이 라인을 시작합 casemechanism.
  • 5 행-$1 이’시작’과 같으면 후속 작업을 수행하십시오. )는 패턴의 끝을 의미합니다.,
  • 7 행-이 명령문 세트의 끝을 이중 세미콜론(;;)으로 식별합니다. 이 다음에 고려해야 할 다음 사례입니다.
  • 14 행-각 경우에 대한 테스트가 패턴임을 기억하십시오. *는 임의의 문자 수를 나타냅니다. 그것은 essentialy 다른 경우 중 어느 것도 일치하지 않는 경우에 대한 모든 경우 캐치입니다. 그것은 필요하지 않지만 자주 사용됩니다.
  • 17 행-esac 는 대/소문자이며 case 문의 끝에 있음을 나타냅니다. 이 이후의 다른 문은 정상적으로 실행됩니다.
  1. ./case.sh 시작
  2. 시작
  3. .,/case.sh 다시 시작
  4. 다시 시작
  5. ./case.sh blah
  6. 알지 못

지금의 모습에서 조금 더 복잡한 예제는 본 사용되는 조금 더 있습니다.

요약

if 테스트가 true 인 경우 일련의 명령을 수행하십시오. 그렇지 않으면 테스트가 사실이 아닌 경우 다른 명령 세트를 수행하십시오. elif 이전 테스트가 false 를 반환 한 경우이 테스트를 시도하십시오. &&및 작업을 수행합니다. //Or 작업을 수행합니다. 사례 특정 패턴과 일치하는 문자열에 따라 실행할 명령 집합을 선택하십시오.,
들여 쓰기 들여 쓰기로 코드를 훨씬 쉽게 읽을 수 있습니다. Bash 스크립트가 길어질수록 점점 더 중요 해집니다. 지금 계획하는 스크립트는 점점 더 복잡한 당신은 아마을 보내고 싶은 약간의 시간이는 방법에 대해 생각하고 당신은 구조 그들이 다이빙하기 전에.

활동

이제 몇 가지 결정을 내리겠습니다.

  • 명령 줄 인수로 2 개의 숫자를 취할 Bash 스크립트를 만듭니다. 그것은 두 개의 숫자 중 더 큰 화면에 인쇄됩니다.,
  • 파일을 명령 줄 인수로 받아들이고 특정 방식으로 분석하는 Bash 스크립트를 만듭니다. 예. 파일이 실행 가능한지 또는 쓰기 가능한지 확인할 수 있습니다. True 인 경우 특정 메시지를 인쇄하고 false 인 경우 다른 메시지를 인쇄해야합니다.
  • 어떤 요일에 따라 메시지를 인쇄 할 Bash 스크립트를 만듭니다(예:. ‘Happy hump day’For Wedensday,’tgif’for Friday 등).

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다