Linux 네트워크 서비스 와 셸 스 크 립 트 - 셸 프로 그래 밍 의 case 문장 과 순환 문장

제9 장 Shell 프로 그래 밍 의 case 문장 과 순환 문장
1. case 분기 문 1, case 문 구 를 사용 하 는 구조 (1) 적용 상황: 특정한 변 수 는 여러 가지 수치 가 존재 하 므 로 각 수치 에 대해 서로 다른 명령 (2) 형식 을 실행 해 야 합 니 다.
case     in
  1)
      
    ;;
  2)
      
    ;;
*)
      
esac

(3) ① case 꼬리 줄 은 단어 in 이 어야 하 며, 각 모드 는 오른쪽 괄호 로 끝내 야 합 니 다 ② 2 점 번호;명령 시퀀스 가 끝 난 ③ 모드 문자열 에서 괄호 로 연속 적 인 범 위 를 표시 할 수 있 습 니 다. 예 를 들 어 [0 - 9];또한 세로 줄 | 표시 또는 A | B ④ 마지막 *) 로 기본 모드 를 표시 할 수 있 습 니 다. 그 중에서 * 는 마스크 에 해당 하고 기본 모드 는 필요 하지 않 습 니 다.종료 2. for 순환 문 구 를 사용 합 니 다 1. 적용 장면: for 순환 은 목록 대상 에 불규칙 적 이 고 목록 출처 가 고정된 장소 2. for 문장의 구조 에 적 용 됩 니 다.
for     in     
do
        
done

3. while 순환 문 구 를 사용 하여 1. 적용 장면: 순환 횟수 를 제어 하고 조작 대상 은 숫자 순서에 따라 번 호 를 매 기 며 특정한 조건 에 따라 중복 작업 을 수행 하 는 상황 2. while 문장의 구조
while       
do
        
done

while 는 두 가지 특수 조건 테스트 작업 이 있 습 니 다. true 와 false, 전 자 는 무한 순환, 후 자 는 순환 4, until 순환 1, 형식 은 while 와 같 지만 until 의 판단 조건 은 while 와 반대 되 는 2, while true 는 until false 3 에 해당 합 니 다. 순환 명령 을 종료 합 니 다. break (순환 종료), contine (뒤의 명령 을 실행 하지 않 고 다음 순환 으로 직접 이동 합 니 다), exit 0\1(0 은 정상 퇴장, 1 은 이상 퇴장)
5. Shell 함수 응용 1. 함수: 반복 적 으로 호출 된 명령 서열 을 일정한 형식 으로 작성 하여 2. 형식 을 중복 사용 하도록 합 니 다.
[function]     (){
        
    [return x]
}

(1) [return x] 는 함수 반환 값 입 니 다. 함 수 는 반환 값 (2) 호출 함수 없 이 함수 이름 을 직접 입력 하면 됩 니 다. 6. Shell 스 크 립 트 디 버 깅 1. 함수 에 echo 명령 을 추가 하여 실행 내용 에 오류 가 있 는 지 확인 할 수 있 습 니 다.- v: 스 크 립 트 를 실행 할 때 먼저 스 크 립 트 내용 을 화면 에 출력 합 니 다. 잘못 되면 오류 알림 (3) - x: 실 행 된 스 크 립 트 내용 을 화면 에 동기 화 합 니 다. 이것 은 디 버 깅 에 유용 한 매개 변수 7, 연습 문제 1, 숫자 맞 추기 게임 입 니 다. 사용 자 는 1 - 100 의 정 수 를 입력 하여 맞 힐 때 까지 입 니 다.
#!/bin/bash
#game
num=`expr $RANDOM % 100`
while true
do
read -p "   1-100   :" n
if [ $n -eq $num ]
then
        echo "   !"
        break
elif [ $n -lt $num ]
then
        echo "   "
else
        echo "   "
fi
done

2, 99 곱셈 표
#!/bin/bash
#9*9
i=1
x=0
a=""
while [ $i -le 9 ]
do
        j=1
        a=""
        while [ $j -le $i ]
        do
        x=`expr $i \* $j`
        b="$j*$i=$x"
        a="$a  $b"
        let j++
        done
        echo "$a"
        let i++
done

3. user. txt 파일 의 명단 을 사용 하여 계 정 을 자동 으로 만 들 고 초기 암 호 를 설정 합 니 다. 
#!/bin/bash
#useradd
users=$(cat ./user.txt)
for name in $users
do
        grep $name /etc/passwd &> /dev/null
        if [ $? -eq 0 ]
        then
                echo "$name   !    !"
                continue
        fi
        useradd $name
        echo "111111" | passwd --stdin $name
done

4. 사용자 계 정과 비밀 번 호 를 반복 적 으로 테스트 하고 최대 3 번 테스트 하 며 정확 한 알림 을 입력 하여 로그 인 성공 을 알 립 니 다. 그렇지 않 으 면 로그 인 실패 (tom, 123456) 를 알 립 니 다. 
#!/bin/bash
#user login
i=0
while true
do
        read -p "     :" name
        if [ $name = "tom" ]
        then
                read -p "     :" pass
                if [ $pass = "123456" ]
                then
                        echo "    !"
                        break
                else
                        echo "    !"
                fi
        else
                echo "    !"
        fi

        let i++
        if [ $i -eq 3 ]
        then
                echo "      3 ,    !"
                break
        fi
done

5. 자신 을 제외 한 다른 호스트 닫 기
#!/bin/bash
#killpts
if [ $# -eq 0 ]
then
        echo "     IP"
else
        i=$1
        pts=`who | grep -v $1 | awk '{print $2}'`
        for p in $pts
        do
                pkill -kill -t $p
        done
fi

6. 세 개의 메시지 알파벳 조합 문 자 를 텍스트 파일 로 반복 적 으로 만 듭 니 다.
#!/bin/bash
#creat txt
i=1
c=""
get () {
case $1 in
1)
	c="a"
	;;
2)
	c="b"
	;;
3)
	c="c"
	;;
4)
	c="d"
	;;
5)
	c="e"
	;;
6)
	c="f"
	;;
7)
	c="g"
	;;
8)
	c="h"
	;;
9)
	c="i"
	;;
10)
	c="j"
	;;
11)
	c="k"
	;;
12)
	c="l"
	;;
13)
	c="m"
	;;
14)
	c="n"
	;;
15)
	c="o"
	;;
16)
	c="p"
	;;
17)
	c="q"
	;;
18)
	c="r"
	;;
19)
	c="s"
	;;
20)
	c="t"
	;;
21)
	c="u"
	;;
22)
	c="v"
	;;
23)
	c="w"
	;;
24)
	c="x"
	;;
25)
	c="y"
	;;
26)
	c="z"
	;;
*)
	echo $i
esac
}
i=1
a=""
ic=""
jc=""
xc=""
while [ $i -le 26 ]
do
	j=1
	get $i
	a=$c
	while [ $j -le 26 ]
	do
		x=1
		get $j
		jc=$a$c
		while [ $x -le 26 ]
		do
			get $x
			xc=$jc$c
			echo $xc >> aaa-zzz
			let x++
		done
#		echo $xc
		let j++
	done
#	echo $a
	let i++
done

7. 사용자 입력 데이터 형식 판단 (if 와 case 모두 한 번 쓰기)
#!/bin/bash
#chiose
read -p "       :" a
case $a in
[0-9])
        echo "      "
        ;;
[a-z]|[A-Z])
        echo "      "
        ;;
*)
        echo "        "
esac
#!/bin/bash
#chiose2
read -p "       :" a
if [[  $a = [0-9] ]]
then
	echo "        "
elif [[ $a = [a-z] ]] || [[ $a = [A-Z] ]]
then
	echo "        "
else
	echo "        "
fi

8. 1 + 2 +... 100 의 값 을 계산 합 니 다.
#!/bin/bash
#1-100
i=0
a=0
while [ $i -le 100 ]
do
	a=`expr $a + $i`
	let i++
done
echo $a

9. 사용자 와 세 번 째 문제 10 을 대량으로 추가 하고 사용 자 를 대량으로 삭제 합 니 다.
#!/bin/bash
#useradd
users=$(cat ./user.txt)
for name in $users
do
#	uid=`grep aaa /etc/passwd | awk -F: '{print $3}'`
	grep $name /etc/passwd &> /dev/null
	if [ $? -eq 0 ] # && [ $uid -gt 500 ]
	then
		userdel -r $name
		echo "$name   "
	else
		echo "$name   "
	fi
done

좋은 웹페이지 즐겨찾기