셸 의 if 판단, while 순환, for 순환 서론

12817 단어 셸 프로 그래 밍
프로 세 스 제어 if 판단
1. if 판단 조건 의 진 위 를 근거 로 일 여 부 를 결정 하 는 것 은 무엇 입 니까?
2. 왜 if 판단 이 있어 야 합 니까? 컴퓨터 가 사람 처럼 판단 할 수 있 도록
3. 어떻게 사용 합 니까?
if   1;then

      1

	  2

	  3

elif   2;then

      1

	  2

	  3

elif   3;then

      1

	  2

	  3

.......

else

      1

	  2

	  3

fi

사례 1\# 사용자 가 입력 한 나이 에 따라 결 과 를 되 돌려 줍 니 다.
#!/bin/bash

echo "start......"
read -p "       : " age

if [ $age -eq 18 ];then
	echo "too young"
else
	echo "too old"
fi
echo "end......"

사례 2: 사용자 가 입력 한 성적 에 따라 결 과 를 되 돌려 줍 니 다 (유사 예 1)
#!/bin/bash

read -p "       : " score

if [ $score -ge 90 ];then
    echo "  "
elif [ $score -ge 80 ];then
    echo "  "
elif [ $score -ge 70 ];then
    echo "  " 
else
	echo "  "
fi
  3:       
#!/bin/bash

read -p "     :" inp_user
read -p "    :" inp_pwd

if [ $inp_user = "egon" ] && [ $inp_pwd = "123" ];then
	echo "    "
else
	echo "         "
fi

2 차원 제어 while 순환
1. 순환 순환 이란 무엇 인가? 컴퓨터 로 하여 금 어떤 일 을 반복 하 게 하 는 것 이다. 2. 왜 순환 을 사용 해 야 하 는가? 특정한 상황 에서 우 리 는 컴퓨터 로 어떤 일 을 반복 해 야 하기 때문에 순환 3, 순환 (용법) 을 사용 했다.
#  
while   
do
	  1
	  2
	  3
done

#  
while   ;do   1;  2;  3; done

while true;do ifconfig eth0;sleep 0.5;clear; done 

예 1. 로그 인 기능 을 작성 합 니 다. 사용자 이름 비밀번호 가 정확 하지 않 으 면 성공 할 때 까지 다시 입력 합 니 다.
#!/bin/bash

while true
do
    read -p "     :" inp_user
    read -p "    :" inp_pwd

    if [ $inp_user = "egon" ] && [ $inp_pwd = "123" ];then
        echo "    "
        break
    else
        echo "         "
    fi
done

순환
사례 1 출력 3 회 ok
for i in {
     1..3}
do
    echo ok $i
done

사례 2 판단 1.1.1. {2 - 254} ip 주소 가 점용 되 지 않 았 습 니 다 (ping 통 의 점용 가능성)
#!/bin/bash

for i in {
     2..254}
do
	(
    ping -c1 1.1.1.$i &>/dev/null
    if [ $? -eq 0 ];then
        echo "1.1.1.$i ok"
    else
    	echo "1.1.1.$i down"
    fi
    ) &
done

작업: test 디 렉 터 리 아래 txt 를 접미사 로 하 는 파일 을 log 로 끝 냅 니 다.
[root@web02 test]# cat xiugai.sh 
#!/bin/bash
cd /root/test
rename txt log *

   :
[root@web02 test]# cat xiugai2.sh 

for name in `ls *.log`
do
    mv $name ${name%.log}.txt
donefor i in `ls /root/test`
do
mv $i `ls $i | cut -d "." -f1`.log
done[root@web02 test]# cat xiugai3.sh 
#!/bin/bash
for i in `ls /root/test`
do 
    if [ `ls $i | cut -d "." -f2` = log ];then
	
        mv $i `ls $i | cut -d "." -f1`.txt
    elif [ `ls $i | cut -d "." -f2` = txt ];then
	
        mv $i `ls $i | cut -d "." -f1`.log
    fi
done

좋은 웹페이지 즐겨찾기