이 튜토리얼에서는 Bashifstatement 의 기본 사항을 안내하고 쉘 스크립트에서 사용하는 방법을 보여줍니다.의사 결정은 컴퓨터 프로그래밍의 가장 근본적인 개념 중 하나입니다. 다음과 같은 다른 어떤 프로그래밍 언어,if,if..else,if..elif..else고 중첩된if제표에서 사용할 수 있는 코드를 실행하에 따라 특정 조건입니다.,
if 문#
Bashif조건문은 다른 형식을 가질 수 있습니다. 가장 기본적인if문의 형식은 아래와 같습니다:
if TEST-COMMANDthen STATEMENTSfi
if문을 시작으로는if키워드에 의해 따른 조건부현 및then키워드를 사용합니다. 명령문은fi키워드로 끝납니다.,
TEST-COMMAND가True로 평가되면STATEMENTS가 실행됩니다. 는 경우에는TEST-COMMAND반False아무 일도 일어나는STATEMENTS무시됩니다.일반적으로 코드를 항상 들여 쓰고 빈 줄이있는 코드 블록을 분리하는 것이 좋습니다. 대부분의 사람들은 4 공간 또는 2 공간 들여 쓰기를 사용하기로 선택합니다. 들여 쓰기와 빈 줄은 코드를보다 읽기 쉽고 체계적으로 만듭니다.,
살펴보자는 다음 예제 스크립트가 되는지 확인하기 위해 주어진 숫자보다 큰 10:
#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi
코드를 저장한 파일에서 실행하는 명령:
bash test.sh
스크립트를 입력하라는 메시지를 표시합니다 숫자입니다. 는 경우,예를 들어,당신이 입력 15,test명령을 평가하는true기 때문에 15 보다 큰가 10,그리고echo명령 안에then절 실행됩니다.
The variable is greater than 10.
if..,다른 문#
Bashif..else문의 형식은 아래와 같습니다:
if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi
경우에는TEST-COMMAND을 평가하는True, STATEMENTS1실행됩니다. 그렇지 않으면TEST-COMMAND가False를 반환하면STATEMENTS2가 실행됩니다. 문에else절을 하나만 가질 수 있습니다.,
자를 추가else절 이전 스크립트 예:
실행할 경우 코드 번호를 입력하면,스크립트 인쇄는 다른 메시지 기반하는지 여부에 숫자가 많거나 적게/10.
경우..엘리프..다른 문#
Bashif..elif..else문의 형식은 아래와 같습니다:
if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi
경우에는TEST-COMMAND1을 평가하는True, STATEMENTS1실행됩니다., TEST-COMMAND2가True로 평가되면STATEMENTS2가 실행됩니다. 테스트 명령 중 어느 것도True로 평가되지 않으면STATEMENTS2가 실행됩니다.
문에elif절을 하나 이상 가질 수 있습니다. else절은 선택 사항입니다.
조건은 순차적으로 평가됩니다., 한 번씩 상태를 반환하는True나머지 조건이 수행되지 않고 제어 프로그램의 끝으로 이동if문입니다.
자를 추가elif절 이전 스크립트:
중첩된 경우 문#
강타할 수 있을지if문 안에if문입니다. 할 수 있는 장소는 여러if문 다른if문입니다.,다음 스크립트는 세 개의 숫자를 입력하라는 메시지를 표시하고 세 개의 숫자 중에서 가장 큰 숫자를 인쇄합니다.
는 방법은 다음과 같습니다:출력은 다음과 같습니다.
Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
case문을 대신 중첩된if문입니다.여러 조건#
논리OR및AND연산자를 사용할 수 있도록 여러 조건에서if문입니다.,
다음은 세 개의 숫자 중에서 가장 큰 숫자를 인쇄하는 스크립트의 또 다른 버전입니다. 이 버전에서 대신의 중첩된if문,우리가 사용하여 논리AND(&&)연산자입니다.
테스트 연산자#
에 Bashtest명령은 다음 중 하나 구문 형식:
test EXPRESSION]
스크립트를 만들 휴대용,선호를 사용하는 오래 된 시험[명령에 사용할 수 있는 모든 POSIX 합니다., 새로운 업그레이드 버전의test명령[[(두 부류)이에서 지원되는 대부분의 현대적인 시스템을 사용하여 Bash,Zsh,Ksh 및 기본적으로 쉘입니다.
를 부정하는 테스트는 표현을 사용합 논리NOT(!)연산자입니다. 문자열을 비교할 때 항상 작은 따옴표 또는 큰 따옴표를 사용하여 단어 분할 및 전역 문제를 피하십시오.,
아래는 가장 일반적으로 사용되는 사업자:
-nVAR경우의 길이VAR다.-zVAR–VAR가 비어있는 경우 True 입니다.STRING1 = STRING2–STRING1와STRING2가 같으면 True 입니다.STRING1 != STRING2-True ifSTRING1andSTRING2는 동일하지 않습니다.,-
INTEGER1 -eq INTEGER2– True ifINTEGER1andINTEGER2are equal. -
INTEGER1 -gt INTEGER2– True ifINTEGER1is greater thanINTEGER2. -
INTEGER1 -lt INTEGER2– True ifINTEGER1is less thanINTEGER2. -
INTEGER1 -ge INTEGER2– True ifINTEGER1is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2– True ifINTEGER1is equal or less thanINTEGER2., -
-hFILE– True if theFILEexists and is a symbolic link. -
-rFILE– True if theFILEexists and is readable. -
-wFILE– True if theFILEexists and is writable. -
-xFILE– True if theFILEexists and is executable., -dFILE경우FILE존재하고 디렉토리에 있습니다.-eFILE경우FILE존재하는 파일 유형에 관계없이(노드,directory,socket,etc.).-fFILE경우FILE이 존재하고 일반 파일(디렉토리가 아닌 또는 장치).,
결론#
if,if..else및if..elif..else문을 제어할 수 있의 흐름을 강타 스크립트 실행을 평가하여 주어진 조건입니다.피>