셸 스 크 립 트 프로 그래 밍 순환 for/while/untill 순환

순환 실행: 코드 를 0, 1 또는 여러 번 반복 합 니 다.
입장 조건: 조건 이 만족 할 때 만 순환 에 들 어 갑 니 다.
종료 조건: 모든 순환 은 종료 조건 이 있어 야 합 니 다. 순환 을 종료 할 기회 가 있 습 니 다.
bash 스 크 립 트:
     for 순환
     while 순환
     until... 까지 순환
for 순환:
두 가지 형식:
    (1) 목록 옮 겨 다 니 기
    (2) 제어 변수
(1) 목록 옮 겨 다 니 기:
for  VARAIBLE  in  LIST; do
    순환 체
done
입장 조건: 목록 에 요소 만 있 으 면 순환 에 들 어 갈 수 있 습 니 다.
종료 조건: 목록 에 있 는 요 소 를 옮 겨 다 니 기 완료;
LISTT 생 성 방식:
(1) 직접 드 립 니 다.
(2) 정수 목록
(a) {start..end}
(b) seq [start  [incremtal]] last
(3) 목록 을 되 돌려 주 는 명령
(4) glob 
(5) 변수 참조
$@, $*
예시: 세 명의 사용자 추가 
#!/bin/bash
#
for username in user21 user22 user23; do
    if id $username &> /dev/null; then
        echo "$username exists."
    else
        useradd $username && echo "Add user $username finished."
    fi
done

예: 100 이내 의 모든 정수 의 합 을 구한다.
#!/bin/bash
#
declare -i sum=0
for i in {1..100}; do
    echo "\$sum is $sum, \$i is $i"
    sum=$[$sum+$i]
done
echo $sum

예제: 판단/var/log 디 렉 터 리 의 모든 파일 의 내용 형식
#!/bin/bash
#
for filename in /var/log/*; do
    if [ -f $filename ]; then
        echo "Common file."
    elif [ -d $filename ]; then
        echo "Directory."
    elif [ -L $filename ]; then
        echo "Symbolic link."
    elif [ -b $filename ]; then
        echo "block special file."
    elif [ -c $filename ]; then
        echo "character special file."
    elif [ -S $filename ]; then
        echo "Socket file."
    else
        echo "Unkown."
    fi
done

for 순환 형식:
for  VARAIBLE  in  LIST; do
    순환 체
done
for 순환 실현 9 * 9 곱셈 표
#!/bin/bash
#
for j in {1..9}; do
    for i in $(seq 1 $j); do
        echo -n -e "${i}X${j}=$[${i}*${j}]\t"
    done
    echo 
done

while 순환:
while  CONDITION; do
    순환 체
    순환 제어 변수 수정 식
done
입장 조건: CONDITION 테스트 는 "진"
종료 조건: CONDITION 테스트 는 "가짜"입 니 다.
예: 100 이내 의 모든 정수 의 합 을 구한다.
#!/bin/bash
#
declare -i sum=0
declare -i i=1

while [ $i -le 100 ]; do
    let sum+=$i
    let i++
done
echo $sum

until... 까지 순환:
until  CONDITION; do
     순환 체
     순환 제어 변수 수정 식
done
입장 조건: CONDITION 테스트 는 "가짜"
종료 조건: CONDITION 테스트 는 "진짜"
예: 100 이내 의 모든 정수 의 합 을 구한다.
#!/bin/bash
#
declare -i sum=0
declare -i i=1
until [ $i -gt 100 ]; do
    let sum+=$i
    let i++
done
echo $sum

while 순환 의 특수 한 용법 (파일 을 옮 겨 다 니 는 줄):
while  read  VARIABLE; do
    순환 체
done  <  /PATH/FROM/SOMEFILE
/PATH/FROM/SOMEFILE 파일 의 모든 줄 을 순서대로 읽 고 VARIABLE 변수 에 기본 값 을 부여 합 니 다.
예제: ID 번호 가 짝수 인 사용 자 를 찾 아 사용자 이름, ID 및 기본 셸 을 표시 합 니 다.
#!/bin/bash
#
while read line; do
    userid=$(echo $line | cut -d: -f3)
    username=$(echo $line | cut -d: -f1)
    usershell=$(echo $line | cut -d: -f7)
    if [ $[$userid%2] -eq 0 ]; then
        echo "$username, $userid, $usershell."
    fi
done  
  

for :

for  (( ; ; )); do

done

: ;

: , ;

: 100

#!/bin/bash
#
declare -i sum=0
for ((i=1;i<=100;i++)); do
    let sum+=$i
done
echo "Sum: $sum."

예제: 99 곱셈 표를 인쇄 합 니 다.
#!/bin/bash
#
for ((j=1;j<=9;j++)); do
    for ((i=1;i<=j;i++)); do
        echo -e -n "${i}X${j}=$[${i}*${j}]\t"
    done
    echo
done

좋은 웹페이지 즐겨찾기