Bash 스 크 립 트: 순환 구조의 for 순환

총 7 편
for 순환
기본 서식
for    in     
do
        
done

그리고 의 문법 은 모두 한 줄 에 쓰 는 것 이다.
for    in      ; do      ;done

수치 목록 은 대체로 매 거 와 교체 두 종류 로 나 눌 수 있다.
매 거
일반 매 거
값 목록 이 빈 칸 이나 리 턴 문자 로 분 단 된 문자열 입 니 다.
for i in 'apple' 'meat' 'sleep' 'woman'
do
    echo I like $i
done

터미널 에서 이 스 크 립 트 for. sh 를 실행 합 니 다.실행 결과
jelly@X:~$ bash for.sh 
I like apple
I like meat
I like sleep
I like woman

배합 명령 교체
명령 교체 즉 ` 와 $() 두 가지 조작 부호 의 사용.명령 교체 협조 for 순환 은 흔 합 니 다.예 를 들 어 제 시스템 의 사용 자 는 젤리 라 고 하 는데 지금 은 guodong 이라는 사용 자 를 새로 만 들 었 습 니 다.하지만 guodong 사용 자 는 많은 그룹 권한 이 부족 합 니 다.저 는 guodong 에 게 젤리 가 있 는 모든 팀 을 갖 게 하고 싶 습 니 다.그럼 나 는 이렇게 할 수 있다.
for var in `groups jelly`
do
    echo $var #    
    gpasswd -a guodong $var
done

루트 로 이 스 크 립 트 를 실행 하 십시오. 사용자 guodong 에 그룹 을 대량으로 추가 하 는 작업 이 완료 되 었 습 니 다.
번복
괄호 {}
숫자 교체, 예 를 들 어 {1. 100} 알파벳 교체, 예 를 들 어 {a. z}, {A. Z}, {Z. A} ASCII 문자 교체, 예 를 들 어 {a. A} 1 더하기 100 의 합 을 계산 해 보 겠 습 니 다.
#!/bin/bash
ans=0
for i in {1..100}
do
    let ans+=$i
done
echo $ans

결 과 는 5050 입 니 다. 괄호 의 교체 로 지정 한 증분 도 지정 할 수 있 습 니 다. 형식 은 다음 과 같 습 니 다.
{ .. ..  }  

자, 1 부터 100 이내 의 모든 홀수 의 합 을 계산 해 봅 시다.
for i in {1..100..2}
do
    echo $i
done

seq
명령 에 맞 춰 교체 해 야 합 니 다.seq 명령 의 형식 은:
seq    [  ]   

증 량 의 위 치 는 중간 에 있 습 니 다. 이것 은 앞에서 언급 한 괄호 와 다 릅 니 다.예 를 들 어 ('Shell Scripting Expert Recipes for Linux, Bash, and More' P114 에서 각색) 스 크 립 트 로 랜 내 호스트 를 핑 합 니 다.
#!/bin/bash
PREFIX=192.168.1.
for i in `seq 100 110`
do
    echo -n "${PREFIX}$i "
    ping -c5  ${PREFIX}${i} >/dev/null 2>&1
    if [ "$?" -eq 0 ];then
        echo "OK"
    else
        echo "Failed"
    fi
done

물론 for 순환 도 for i in {100.. 110} 터미널 이 실 행 된 결 과 를 작성 할 수 있 습 니 다.
jelly@X:~$ bash ping.sh 
192.168.1.100 Failed
192.168.1.101 Failed
192.168.1.102 OK
192.168.1.103 OK
192.168.1.104 OK
192.168.1.105 OK
192.168.1.106 Failed
192.168.1.107 Failed
192.168.1.108 Failed
192.168.1.109 Failed
192.168.1.110 Failed

C 스타일 for 순환
Bash 는 C 언어 스타일 의 for 순환 도 지원 합 니 다. 이것 은 이해 하기 쉽 습 니 다. 예 를 들 어 1 부터 100 까지 의 합 을 계산 해 보 겠 습 니 다.
#!/bin/bash
ans=0
for ((i=1;i<=100;i++))
do
    let ans+=$i
done
echo $ans

조심해!!!이곳 의 for 순환 은 두 겹 의 괄호 가 있어 야 한다.
이 시리즈 (Bash 스 크 립 트 돌리 기) 에 더 많은 글 이 있 습 니 다. 방문 하 십시오:http://blog.csdn.net/column/details/wanbash.html

좋은 웹페이지 즐겨찾기