셸 프로 세 스 제어
<?php
if (isset($_GET["q"])) {
search(q);
}
else {
//
}
sh/bash 에 서 는 이렇게 쓰 면 안 됩 니 다.else 분기 에 문장 이 실행 되 지 않 으 면 이 else 를 쓰 지 마 세 요.if else
if
if 구문 문법 형식:
if condition
then
command1
command2
...
commandN
fi
한 줄 로 쓰기(터미널 명령 프롬프트 에 적용):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
마지막 fi 는 if 를 거꾸로 쓰 면 비슷 한 것 을 만 날 수 있 습 니 다.if else
if else 문법 형식:
if condition
then
command1
command2
...
commandN
else
command
fi
if else-if elseif else-if else 문법 형식:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
다음 인 스 턴 스 는 두 변수 가 같 는 지 여 부 를 판단 합 니 다.
a=10
b=20
if [ $a == $b ]
then
echo "a b"
elif [ $a -gt $b ]
then
echo "a b"
elif [ $a -lt $b ]
then
echo "a b"
else
echo " "
fi
출력 결과:a 보다 작 음 b
if else 문 구 는 test 명령 과 자주 결합 하여 사용 합 니 다.다음 과 같 습 니 다.
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo ' !'
else
echo ' !'
fi
출력 결과:두 숫자 가 같다!
for 순환
다른 프로 그래 밍 언어 와 유사 합 니 다.Shell 은 for 순환 을 지원 합 니 다.
for 순환 일반 형식:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
한 줄 로 쓰기:
for var in item1 item2 ... itemN; do command1; command2… done;
변수 값 이 목록 에 있 을 때 for 순환 은 모든 명령 을 한 번 실행 하고 변수 이름 으로 목록 의 현재 값 을 가 져 옵 니 다.명령 은 모든 유효한 셸 명령 과 문 구 를 위 한 것 입 니 다.in 목록 은 교체,문자열,파일 이름 을 포함 할 수 있 습 니 다.in 목록 은 선택 할 수 있 습 니 다.사용 하지 않 으 면 for 는 명령 행 의 위치 변 수 를 순환 적 으로 사용 합 니 다.
예 를 들 어 현재 목록 의 숫자 를 순서대로 출력 합 니 다.
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
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
while 구문
while 순환 은 일련의 명령 을 계속 실행 하 는 데 사용 되 며 입력 파일 에서 데 이 터 를 읽 는 데 도 사 용 됩 니 다.명령 은 보통 테스트 조건 이다.그 형식 은:
while condition
do
command
done
다음은 기본 적 인 while 순환 입 니 다.테스트 조건 은 int 가 5 보다 작 으 면 조건 이 진짜 로 돌아 갑 니 다.int 는 0 부터 순환 처리 할 때마다 int 에 1 을 추가 합 니 다.위 스 크 립 트 를 실행 하고 숫자 1 부터 5 까지 되 돌려 주 고 종료 합 니 다.
#!/bin/bash
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
스 크 립 트 실행,출력:1
2
3
4
5
상기 실례 는 Bash let 명령 을 사 용 했 습 니 다.이것 은 하나 이상 의 표현 식 을 실행 하 는 데 사 용 됩 니 다.변수 계산 에$를 더 해서 변 수 를 표시 할 필요 가 없습니다.
while 순환 은 키보드 정 보 를 읽 는 데 사용 할 수 있 습 니 다.다음 예 에서 입력 정 보 는 변수 FILM 으로 설정 되 어
echo ' <CTRL-D> '
echo -n ' : '
while read FILM
do
echo " !$FILM "
done
스 크 립 트 를 실행 합 니 다.출력 은 다음 과 같 습 니 다:당신 이 가장 좋아 하 는 사이트 이름 을 입력 하 세 요:우리
네!우 리 는 좋 은 사이트 다.
무한 순환
무한 반복 문법 형식:
while :
do
command
done
혹은
while true
do
command
done
혹은
for (( ; ; ))
until...까지 순환조건 이 true 일 때 까지 일련의 명령 을 반복 해서 실행 합 니 다.
until 순환 은 while 순환 과 처리 방식 이 정반 대 입 니 다.
일반적으로 while 순환 은 until 순환 보다 좋 지만,때로는 극소수 일 뿐,until 순환 은 더욱 유용 하 다.
until 문법 형식:
until condition
do
command
done
condition 은 일반적으로 조건 식 입 니 다.값 이 false 로 되 돌아 오 면 체 내 문 구 를 계속 실행 합 니 다.그렇지 않 으 면 순환 이 됩 니 다.다음 인 스 턴 스 는 until 명령 을 사용 하여 0~9 의 숫자 를 출력 합 니 다.
#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
실행 결과:출력 결 과 는:
0
1
2
3
4
5
6
7
8
9
case
Shell case 문 구 는 다 중 선택 문 입 니 다.케이스 문 구 를 사용 하여 하나의 패턴 과 값 을 일치 시 킬 수 있 습 니 다.일치 하면 일치 하 는 명령 을 수행 할 수 있 습 니 다.case 구문 형식 은 다음 과 같 습 니 다.
case in
1)
command1
command2
...
commandN
;;
2)
command1
command2
...
commandN
;;
esac
케이스 작업 방식 은 위 와 같다.값 을 얻 으 려 면 단어 in 이 어야 합 니 다.모든 모드 는 오른쪽 괄호 로 끝나 야 합 니 다.수 치 는 변수 나 상수 일 수 있다.일치 하 는 값 이 특정한 모드 에 부합 되 는 것 을 발견 하면 그 동안 모든 명령 이 실 행 될 때 까지 실 행 됩 니 다.값 을 추출 하면 일치 하 는 모든 모드 를 검사 합 니 다.패턴 이 일치 하면 일치 모드 에 해당 하 는 명령 을 실행 한 후 다른 모드 를 계속 하지 않 습 니 다.일치 하 는 모드 가 없 으 면 별표*로 이 값 을 캡 처 하고 다음 명령 을 수행 합 니 다.
다음 스 크 립 트 알림 은 1 부터 4 까지 입력 하여 각 모드 와 일치 합 니 다.
echo ' 1 4 :'
echo ' :'
read aNum
case $aNum in
1) echo ' 1'
;;
2) echo ' 2'
;;
3) echo ' 3'
;;
4) echo ' 4'
;;
*) echo ' 1 4 '
;;
esac
다른 내용 을 입력 하면 다른 결과 가 있 습 니 다.예 를 들 어:1 에서 4 사이 의 숫자 를 입력 하 십시오:
입력 한 숫자 는:
3
너 는 3 을 선택 했다.
점프 순환
순환 과정 에서 순환 종료 조건 에 이 르 지 못 했 을 때 순환 을 강제로 꺼 내야 할 때 가 있 습 니 다.Shell 은 두 개의 명령 을 사용 하여 이 기능 을 실현 합 니 다.break 와 contine.
break 명령
break 명령 은 모든 순환 을 뛰 어 넘 을 수 있 습 니 다.
다음 예 에서 스 크 립 트 는 사용자 의 입력 숫자 가 5 보다 클 때 까지 순환 합 니 다.이 순환 을 벗 어 나 셸 프롬프트 로 돌아 가 려 면 break 명령 을 사용 해 야 합 니 다.
#!/bin/bash
while :
do
echo -n " 1 5 :"
read aNum
case $aNum in
1|2|3|4|5) echo " $aNum!"
;;
*) echo " 1 5 ! "
break
;;
esac
done
상기 코드 를 실행 하고 출력 결 과 는 다음 과 같 습 니 다.1 에서 5 사이 의 숫자 입력:3
네가 입력 한 숫자 는 3 이다!
1 에서 5 사이 의 숫자 를 입력 하 십시오:7
네가 입력 한 숫자 는 1 에서 5 사이 가 아니 야!게임 종료
continue
contine 명령 은 break 명령 과 유사 합 니 다.약간의 차이 만 있 습 니 다.모든 순환 을 뛰 어 넘 지 않 고 현재 순환 만 뛰 어 넘 습 니 다.
위의 예 를 수정 합 니 다.
#!/bin/bash
while :
do
echo -n " 1 5 : "
read aNum
case $aNum in
1|2|3|4|5) echo " $aNum!"
;;
*) echo " 1 5 !"
continue
echo " "
;;
esac
done
실행 코드 는 5 이상 의 숫자 를 입력 할 때 이 사례 의 순환 이 끝나 지 않 고 문장 echo'게임 끝'은 영원히 실행 되 지 않 는 다 는 것 을 발견 했다.case ... esac
case...esac 는 다른 언어 에서 switch...case 문장 과 유사 하 며 다 분지 선택 구조 입 니 다.각 case 지점 은 오른쪽 괄호 로 시작 하고 두 개의 지점 으로 시작 합 니 다.break,즉 실행 종료,전체 case...esac 문 구 를 뛰 어 내 리 는 것 을 의미 합 니 다.esac(즉 case 거꾸로)는 끝 표시 로 합 니 다.
case...esac 문법 형식 은 다음 과 같 습 니 다.
case in
1)
command1
command2
command3
;;
2)
command1
command2
command3
;;
*)
command1
command2
command3
;;
esac
케이스 후 값 을 추출 합 니 다.값 은 변수 나 상수 일 수 있 습 니 다.값 후 키워드 in 입 니 다.다음은 일치 하 는 여러 가지 모드 입 니 다.모든 모드 는 마지막 으로 오른쪽 괄호 로 끝내 야 합 니 다.모드 는 정규 표현 식 을 지원 합 니 다.
#!/bin/sh
site="jb51"
case "$site" in
"jb51") echo " "
;;
"google") echo "Google "
;;
"taobao") echo " "
;;
esac
출력 결 과 는:우리.
이상 은 Shell 프로 세 스 제어 에 대한 상세 한 내용 입 니 다.Shell 프로 세 스 제어 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.