이 튜토리얼에서는 Bashif
statement 의 기본 사항을 안내하고 쉘 스크립트에서 사용하는 방법을 보여줍니다.의사 결정은 컴퓨터 프로그래밍의 가장 근본적인 개념 중 하나입니다. 다음과 같은 다른 어떤 프로그래밍 언어,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
(!
)연산자입니다. 문자열을 비교할 때 항상 작은 따옴표 또는 큰 따옴표를 사용하여 단어 분할 및 전역 문제를 피하십시오.,
아래는 가장 일반적으로 사용되는 사업자:
-n
VAR
경우의 길이VAR
다.-z
VAR
–VAR
가 비어있는 경우 True 입니다.STRING1 = STRING2
–STRING1
와STRING2
가 같으면 True 입니다.STRING1 != STRING2
-True ifSTRING1
andSTRING2
는 동일하지 않습니다.,-
INTEGER1 -eq INTEGER2
– True ifINTEGER1
andINTEGER2
are equal. -
INTEGER1 -gt INTEGER2
– True ifINTEGER1
is greater thanINTEGER2
. -
INTEGER1 -lt INTEGER2
– True ifINTEGER1
is less thanINTEGER2
. -
INTEGER1 -ge INTEGER2
– True ifINTEGER1
is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2
– True ifINTEGER1
is equal or less thanINTEGER2
., -
-h
FILE
– True if theFILE
exists and is a symbolic link. -
-r
FILE
– True if theFILE
exists and is readable. -
-w
FILE
– True if theFILE
exists and is writable. -
-x
FILE
– True if theFILE
exists and is executable., -d
FILE
경우FILE
존재하고 디렉토리에 있습니다.-e
FILE
경우FILE
존재하는 파일 유형에 관계없이(노드,directory,socket,etc.).-f
FILE
경우FILE
이 존재하고 일반 파일(디렉토리가 아닌 또는 장치).,
결론#
if
,if..else
및if..elif..else
문을 제어할 수 있의 흐름을 강타 스크립트 실행을 평가하여 주어진 조건입니다.피>