Shell 스 크 립 트 의 조건 제어 와 순환 문

조건 판단:if 문장
문법 형식:

if [ expression ]
then
Statement(s) to be executed if expression is true
fi
메모:expression 과 괄호([])사이 에 빈 칸 이 있어 야 합 니 다.그렇지 않 으 면 문법 오류 가 발생 할 수 있 습 니 다.
if 문 구 는 관계 연산 자 를 통 해 표현 식 의 진 위 를 판단 하여 어느 가 지 를 실행 할 지 결정 합 니 다.Shell 에는 세 가지 if...else 문구 가 있 습 니 다.

if ... fi   
if ... else ... fi   
if ... elif ... else ... fi   
예시:

#!/bin/bash/
a=10
b=20
if [ $a == $b ]
then 
echo "a is equal to b"
elif [ $a -gt $b ]
then
echo "a is greater to b"
else
echo "a is less to b"
fi
if...else 구문 도 한 줄 로 쓸 수 있 습 니 다.명령 으로 실행 할 수 있 습 니 다.

a=10;b=20;if [ $a == $b ];then echo "a is equal to b";else echo "a is not equal to b";fi;
if...else 문 구 는 test 명령 과 자주 결합 하여 사용 되 며,역할 은 위 와 같 습 니 다.

#!/bin/bash/
a=10
b=20
if test $a == $b 
then 
echo "a is equal to b"
else
echo "a is not equal to b"
fi
분기 제어:case 구문
case...esac 는 다른 언어 에서 switch...case 문장 과 유사 하 며 여러 가지 선택 구조 입 니 다.
예시:

#!/bin/bash/
grade="B"
case $grade in 
"A") echo "Very Good!";;
"B") echo "Good!";;
"C") echo "Come On!";;
*) 
echo "You Must Try!"
echo "Sorry!";;
esac
C 언어 로 변환 하려 면:

#include <stdio.h>
int main(){
char grade = 'B';
switch(grade){
case 'A': printf("Very Good!");break;
case 'B': printf("Very Good!");break;
case 'C': printf("Very Good!");break;
default: 
printf("You Must Try!");
printf("Sorry!");
break;
}
return 0;
}
비교 해 보면 쉽게 이해 할 수 있다.비슷 하지만 격식 이 다 릅 니 다.
주의해 야 할 것 은:
값 을 얻 으 려 면 키워드 in 이 어야 합 니 다.모든 모드 는 오른쪽 괄호 로 끝나 야 합 니 다.수 치 는 변수 나 상수 일 수 있다.일치 하 는 값 이 특정한 모드 에 부합 되 는 것 을 발견 하면 그 동안 모든 명령 이;;;;;;다른 언어 에서 break 와 유사 하 게 전체 case 문장의 마지막 에 뛰 어 들 었 다 는 뜻 이다.
값 을 추출 하면 일치 하 는 모든 모드 를 검사 합 니 다.패턴 이 일치 하면 일치 모드 에 해당 하 는 명령 을 실행 한 후 다른 모드 를 계속 하지 않 습 니 다.일치 하 는 모드 가 없 으 면 별표*로 이 값 을 캡 처 하고 다음 명령 을 수행 합 니 다.
다시 하나의 예 를 들다.

#!/bin/bash
option="${1}"
case ${option} in
"-f") FILE="${2}"
echo "File name is $FILE"
;;
"-d") DIR="${2}"
echo "Dir name is $DIR"
;;
*) 
echo "`basename ${0}`:usage: [-f file] | [-d directory]"
exit 1 # Command to come out of the program with status 1
;;
esac
실행 결과:

$./test.sh
test.sh: usage: [ -f filename ] | [ -d directory ]
./test.sh -f index.html
File name is index.html
특수 변수${1}을 사 용 했 습 니 다.명령 행 을 가 져 오 는 첫 번 째 인 자 를 말 합 니 다.
for 순환
셸 의 for 순환 은 c,phop 등 언어 와 달리 Python 과 유사 합 니 다.다음은 문법 형식 입 니 다.
for 변수 in 목록

do
command1
command2
...
commandN
done
예시:

#!/bin/bash/
for value in 1 2 3 4 5
do 
echo "The value is $value"
done
출력:

The value is 1
The value is 2
The value is 3
The value is 4
The value is 5
순차 출력 문자열 의 문자:

for str in 'This is a string'
do
echo $str
done
실행 결과:
This is a string
디 렉 터 리 에 있 는 파일 옮 겨 다 니 기:

#!/bin/bash
for FILE in *
do
echo $FILE
done
위의 코드 는 현재 디 렉 터 리 아래 의 모든 파일 을 옮 겨 다 닐 것 입 니 다.Linux 에서 다른 디 렉 터 리 로 바 꿔 볼 수 있 습 니 다.
파일 내용 옮 겨 다 니 기:
city.txt

beijing
tianjin
shanghai
#!/bin/bash
citys=`cat city.txt`
for city in $citys
echo $city
done
출력:
beijing
tianjin
shanghai
while 순환
while 뒤의 조건 이 만족 하면 도 안의 코드 블록 을 계속 실행 합 니 다.
그 형식 은:
while command
do
Statement(s) to be executed if command is true
done
명령 이 실행 되 었 습 니 다.순환 상단 으로 돌아 가 는 것 을 제어 합 니 다.테스트 조건 이 가짜 일 때 까지 처음부터 시작 합 니 다.
예시:

#!/bin/bash
c=0;
while [ $c -lt 3 ]
do
echo "Value c is $c"
c=`expr $c + 1`
done
출력:
Value c is 0
Value c is 1
Value c is 2
셸 자체 가 산수 연산 을 지원 하지 않 기 때문에 expr 명령 을 사용 하여 자체 증 가 를 진행 합 니 다.
until...까지 순환
조건 이 true 일 때 까지 일련의 명령 을 반복 해서 실행 합 니 다.until 순환 은 while 순환 과 처리 방식 이 정반 대 입 니 다.일반적으로 while 순환 은 until 순환 보다 좋 지만,어떤 때 는 극소수의 경우 에 만 until 순환 이 더욱 유용 하 다.
위의 while 순환 의 예 를 바 꾸 면 같은 효 과 를 얻 을 수 있 습 니 다.

#!/bin/bash
c=0;
until [ $c -eq 3 ]
do
echo "Value c is $c"
c=`expr $c + 1`
done
우선 do 안의 문장 블록 은 until 의 조건 을 만족 시 킬 때 까지 계속 실행 되 고 있 습 니 다.
출력:
Value c is 0
Value c is 1
Value c is 2
점프 순환
순환 과정 에서 순환 이 끝나 지 않 았 을 때 순환 을 강제 해 야 할 때 가 있 습 니 다.대부분의 프로 그래 밍 언어 처럼 Shell 도 break 와 contine 을 사용 하여 순환 을 뛰 어 넘 습 니 다.
break
break 명령 은 모든 순환 을 뛰 어 넘 을 수 있 습 니 다.

#!/bin/bash
i=0
while [ $i -lt 5 ]
do
i=`expr $i + 1`
if [ $i == 3 ]
then
break
fi
echo -e $i
done
실행 결과:
1
2
끼 워 넣 기 순환 에서 break 명령 뒤 에는 정수 와 함께 몇 번 째 순환 을 나 타 낼 수 있 습 니 다.예 를 들 면:
break n
n 층 순환 을 뛰 어 넘 는 것 을 나타 낸다.
continue
contine 명령 은 break 명령 과 유사 합 니 다.약간의 차이 만 있 습 니 다.모든 순환 을 뛰 어 넘 지 않 고 현재 순환 만 뛰 어 넘 습 니 다.

#!/bin/bash
i=0
while [ $i -lt 5 ]
do
i=`expr $i + 1`
if [ $i == 3 ]
then
continue
fi
echo -e $i
done
실행 결과:
1
2
4
5
이상 의 내용 은 여러분 에 게 소 개 된 Shell 스 크 립 트 의 조건 제어 와 순환 문 에 관 한 지식 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기