순환 for, while, until
for while until
하나
for 변수 이름 in 목록;do
순환 체
done
우선 in 후 list 목록 의 첫 번 째 상수 나 문자열 을 순환 변수 에 할당 합 니 다.
그리고 순환 체 실행 하기;목록 의 필드 를 순서대로 할당 하고 done 명령 을 실행 한 후 명령 시퀀스 입 니 다.
list 목록 생 성 방법:
(1) 목록 바로 보 여주 기 1 2 3
(2) 정수 목록:
(a) {start..end} {1..10}
(b) $(seq [start [step]] end) `seq 1 10`
(3) 목록 의 명령 을 되 돌려 줍 니 다 $(COMMAND)
(4) glob 사용, 예: *. sh
(5) 변수 참조; $@, $*
정수 n 의 값 을 입력 하고 1 + 2 + 3 +... n 의 합 계 를 계산 하 는 것 을 알려 줍 니 다.
read -p "please enter a positive integer:" n
for i in $(seq 1 $n 2>/dev/null);do
let s+=i
done
done
echo "sum=$s"
특수 용법: 유사 C 언어 for
for (제어 변수 초기 화, 조건 판단 표현 식, 제어 변수의 수정 표현 식)
do
순환 체
done
두 개의 작은 괄호: C 스타일 변수 작업 실현 ((i++))
얼굴 변경 초기 화 제어: 첫 번 째 순환 시 에 만 실행
변 수 를 제어 하 는 수정 식: 다음 순환 에 들 어가 기 전에 먼저 실 행 됩 니 다.
1 부터 100 까지 정수 와 for 실현
for((i=1;i<=100;i++));do
let sum+=i
done
echo $sum
동안
while CONDITION; do
순환 체
done
조건 은 진실 이 고 순환 을 실행 합 니 다.
조건 은 가짜, 순환 종료.
조건 에 맞지 않 을 때 까지 순환 을 종료 합 니 다.
CONDITION: 순환 제어 조건;순환 에 들 어가 기 전에 먼저 판단 을 한다.매번 순환 후 다시 판단 하기;
CONDTION 변수의 값 은 변화 해 야 합 니 다.순환 체 에서 끊임없이 수정 되 어야 한다.순환 종료 조건 만 들 기
1 부터 100 까지 모든 정수 와 while 실현
i=1
while [ $i -le 100 ];do
let s=s+i
let i++
done
echo "$s"
특수 용법:
while read line; do
순환 체
done 파일 의 모든 줄 을 순서대로 읽 고 변수 라인 에 복사 합 니 다.
GECOS 필드 가 비어 있 는 것 을 발견 하면 사용자 이름과 단위 전 화 를 62985600 으로 채 웁 니 다.
이 사용자 의 GECOS 정보 수정 이 성 공 했 음 을 알려 준다.
while read line ;do
user=`echo $line|cut -d: -f1`
gc=`echo $line|cut -d: -f5`
[ -z $gc ]&>/dev/null && usermod -c "$user 62985600" $user && printf "%-12s %s
" $user
"GECOS changed"
done
三、until
until CONDITION; do
循环体
done
条件为假,执行循环
条件为真,退出循环
直到符合条件退出循环
1到100正整数和until实现
i=0
until [ $i -gt 100 ];do
let sum+=i
let i++
done
echo $sum
순환 제어 문:
일반적으로 판단 문 구 를 결합 하여 사용 하 며, 특정한 상황 을 뛰 어 넘 는 데 사용 된다.
1)continue # #몇 층 이 고, 가장 안쪽 은 1 층 이다.
제\# 층 의 이번 순환 을 앞 당 겨 끝내 고 바로\# 층 의 다음 라운드 판단 에 들 어 갑 니 다.
2)break # 끝\# 층 순환, 최 내 층 은 1 층
직접 종료\# 층 순환 체,\# 층 후속 순환 은 실행 되 지 않 습 니 다.
작업:
1. 3 초 마다 시스템 에 로그 인 한 사용자 의 정 보 를 얻 습 니 다.사용자 hacker 로그 인 이 발견 되면 로그 인 시간 과 호스트 를 로그/var/log/login. log 에 기록 하고 시스템 을 종료 하 라 고 알려 줍 니 다.#!/bin/bash
#
echo
until w|cut -d ' ' -f1|grep "hacker" ;do
let i++
echo -e "\b\r$i \t `date` \t no hacker"
sleep 3
done
echo "should logout"|mail -s 'warning' hacker
echo "is here ! ! !"
echo -e "`date` warning! `w|grep "^hacker"`">>/var/log/messages
2. 10 이내 의 숫자 를 무 작위 로 생 성하 고 맞 춤 법 게임 을 실현 하 며 알림 이 크 거나 작 으 면 종료#!/bin/bash
#
n=$[RANDOM%11]
num=a
until [ $num -eq $n ]&>/dev/null;do
read -p "please enter a numbe [0-10]:" num
if [ -z $num ] ;then
continue 2
elif [[ ! $num =~ 1?[0-9] ]] ;then
continue 2
elif [ $num -gt $n ] ;then
echo " your number is bigger"
elif [ $num -lt $n ] ;then
echo " your number is smaller!"
fi
done
echo you hit the number! $n
3. 스 크 립 트 를 작성 하여 100 이내 의 모든 정수 합 을 구 합 니 다.#!/bin/bash
#zjj
i=0
until [ $i -gt 100 ];do
let sum+=i
let i++
done
echo $sum
4. 스 크 립 트 를 작성 하고 ping 명령 을 통 해 172.16.250.1 - 254 범위 내의 모든 호스트 의 온라인 상 태 를 탐지 하 며 온라인 호스트 와 오프라인 호스트 가 각각 얼마 인지 통계 합 니 다.#!/bin/bash
#
i=1
NumUp=0
NumDown=0
echo
until [ $i -gt 254 ];do
if ping -W1 -c1 10.1.252.$i &>/dev/null ;then
let NumUp++
echo -e "
\t\t 10.1.252.$i is up $NumUp"
else
let NumDown++
echo -e "\b\r$NumDown down"
fi
let i++
done
5. 스 크 립 트 를 작성 하고 99 곱셈 표를 인쇄 합 니 다.#!/bin/bash
#
i=1
until [ $i -gt 9 ];do
j=1
until [ $j -gt $i ];do
echo -n -e "${j}*${i}=$[$i*$j]\t"
let j++
done
echo
let i++
done
6. 스 크 립 트 를 작성 합 니 다. 변수 RANDOM 을 이용 하여 10 개의 무 작위 숫자 를 생 성하 고 10 개의 숫자 를 출력 하 며 최대 자 와 최소 자 를 표시 합 니 다.#!/bin/bash
#zjj
i=1
ran=$RANDOM
max=$ran
min=$ran
echo $ran
until [ $i -gt 9 ];do
ran=$RANDOM
echo $ran
if [ $ran -gt $max ];then
max=$ran
elif [ $ran -lt $min ];then
min=$ran
fi
let i++
done
echo MAX=$max MIN=$min
7. 스 크 립 트 를 작성 하여 체스 판 인쇄 실현#!/bin/bash
#
i=1
row=1
until [ $row -gt 8 ] ;do
column=1
until [ $column -gt 8 ] ;do
i=$[$i%2]
if [ $i -eq 1 ];then
echo -ne "\033[47m \033[0m"
else
echo -ne "\033[41m \033[0m"
fi
let i++
let column++
done
echo
let row++
let i++
done
8. 등허리 삼각형 (마름모꼴) 인쇄#!/bin/bash
#
read -p "enter the number of line:" line
for((i=1;i<=$line;i++))
do
count=$[2*$i-1]
sapce=$[$line-$i+1]
printf "%${sapce}c" ' '
for((j=1;j<=$count;j++));do
echo -n "*"
done
echo
done
for((i=$[line-1];i>=1;i--))
do
count=$[2*$i-1]
sapce=$[$line-$i+1]
printf "%${sapce}c" ' '
for((j=1;j<=$count;j++));do
echo -n "*"
done
echo
done
9. centos 6.7 을 설치 하고 centos 6.8 kernel 로 업그레이드 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C의 루프
컴퓨터에는 일련의 명령을 반복적으로 수행할 수 있는 능력이 있습니다.
이것은 기본 조건이 만족될 때까지 프로그램의 특정 부분을 특정 횟수 또는 무한 반복하는 것을 포함합니다.
루프의 메서드
WHILE 루프:
C 프로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.