script : 수행 해야할 여러가지 작업들을 하나 파일로 정해놓은 것
shell script : shell이 script를 실행한다.
- bourne shell : 최초의 shell. 지원하는 명령어가 적음
/bin/sh - c shell : bourne shell의 개량형
/bin/csh - korn shell : 유닉스에서 많이 사용중인 shell (bourne shell + 편의 기능)
/bin/ksh - bash shell :리눅스의 기본 shell로 다양한 명령과 편의성을 지원함
/bin/bash - /usr/bin/명령어 : 일반 유저 사용
- /usr/sbin/명령어 : 슈퍼유저 사용(root)
shell script를 쓸때 첫줄에는 반드시 쉘 타입을 써줘야한다.
단 첫줄은 주석으로 읽지 않는다.
- #!/bin/bash
shell script를 실행할때는 실행권한이 있을때와 없을때가 다르다.
- ./filename.sh : 실행권한 있을때
- sh filename.sh : 실행권한 없을때
또 한가지 방법으로는 chmod를 이용해 실행권한을 줘도 된다.
shell script 형식
-echo : echo뒤의 내용을 화면에 출력한다.
[root@dbserver shell]# vi fruit.sh
1 #bin/bash
2
3 fruit=apple
4 drink=cokecola
5
6 echo $fruit
7 echo $drink
변수명으로 쉘 스크립트 짜기
‘변수명 = 값’ 형태로 사용( 절대 기호 좌우에 공백 있으면 안된다)
-> 공백이 있을경우 “” (쌍따옴표)로 묶어줘야함
[root@dbserver shell]# vi ifconfig.sh
1 #!/bin/bash
2 echo `ifconfig | grep inet | grep -v 127.0.0.1`
ifconfig의 inet을 출력하되, 127.0.0.1는 빼고 출력
역따옴표 :특정 명령어를 실행한 결과를 출력
[root@dbserver shell]# vi echon.sh
1 #!/bin/bash
2 echo 'aaaaaa'
3 echo "aaaaaa"
4 echo -n "bbbbb"
5 echo -n "ccccc"
-n은 줄을 바꾸지 않고 연속적으로 출력한다.
- read 함수 사용 : 사용자로부터 값을 입력 받아서 변수에 저장해주는 역할
- argument 사용해서 실행
/etc/init.d/network stop을 수행할 때 stop부분을 인수(argument)라고한다
- 크기비교
- [ $A -gt $B ] : A값이 B값보다 크다
- [ $A -lt $B ] : A값이 B값보다 작다
- [ $A -ge $B ] : A값이 B보다 크거나 같다
- [ $A -le $B ] : A값이 B보다 작거나 같다.
- [ $A -eq $B ] : A값이 B값과 같다
- [ $A -ne $B ] : A값이 B값과 다르다
공백을 하지 않으면 크기비교가 되지 않으니 조심할것 !
[root@server101 ~]# vi comp_test1.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter First Number : "
4 read A
5 echo ""
6 echo -n "Enter Second Number : "
7 read B
8 echo ""
9
10 if [ $A -eq $B ]
11 then
12 echo "$A = $B"
13 elif [ $A -gt $B ]
14 then
15 echo "$A > $B"
16 elif [ $A -lt $B ]
17 then
18 echo "$A < $B"
19 fi
20 echo ""
[root@server101 ~]# sh comp_test1.sh
Enter First Number : 3
Enter Second Number : 5
3 < 5
숫자 계산하기
Shell Script는 기본적으로 모든 데이터를 문자로 인식
expr로 연산을 함
[root@server101 ~]# vi cal_test1.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter First Number : "
4 read A
5 echo -n "Enter Second Number : "
6 read B
7 echo ""
8 echo "$A + $B"
9 echo ""
[root@server101 ~]# sh cal_test1.sh
Enter First Number : 2
Enter Second Number : 4 -> 연산 안해줌
2 + 4
[root@server101 ~]# vi cal_test2.sh
\#!/bin/bash
echo ""
echo -n "Enter first Number : "
read A
echo ""
echo -n "Enter second Numver : "
read B
echo ""
hap=`expr $A + $B`
echo ""
echo "$A + $B = $hap"
echo ""
[root@server101 ~]# sh cal_test2.sh
Enter first Number : 3
Enter second Numver : 5
3 + 5 = 8 -> 연산작업 한번 거침
세개의 숫자를 입력받아서 연산
[root@server101 ~]# vi cal_test3.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter First Number :"
4 read A
5 echo ""
6 echo -n "Enter Second Number :"
7 read B
8 echo ""
9 echo -n "Enter Third Number :"
10 read C
11 echo ""
12
13 result=`expr \( $A + $B \) \* $C` -> ( , ), * 메타캐릭터라서 \역슬래시 꼭 붙여줘야
연산자로 인식함
expr 구문 안에서의 모든연산자와 기호, 변수
사이에는 공백으로 한칸 띄어야함!
14 echo ""
15 echo "($A + $B ) X $C = $result"
16 echo ""
[root@server101 ~]# sh cal_test3.sh
Enter First Number :3
Enter Second Number :4
Enter Third Number :2
(3 + 4 ) X 2 = 14
문자열 비교하기
[ “string1” = “string2” ]
두 문자열이 같은 경우
[ “string1” != “string2” ]
두 문자열이 다른경우
[ -z “string” ]
문자열의 길이가 0인경우
[ -n “string” ]
문자열의 길이가 0이 아닌 경우
[root@server101 ~]# vi comp_string1.sh
1 #!/bin/bash
2 echo""
3 echo -n "Enter String:"
4 read str
5 echo ""
6
7 if [ $str = "Korea" ] -> 공백 조심 !!!
8 then
9 echo "Korea"
10 else
11 echo "Not Korea"
12 fi
13 echo""
[root@server101 ~]# sh comp_string1.sh
Enter String:k
Not Korea
[root@server101 ~]# sh comp_string1.sh
Enter String:Korea
Korea
파일관리하기
[ -f 파일명 ]
파일이 있는경우
[ -s 파일명 ]
파일이 존재하고 내용이 있는 경우
[ -d 파일명 ]
파일이 아니고 디렉토리인경우
[ -r 파일명 ]
읽기가 가능한 파일일 경우
[ -w 파일명 ]
쓰기가 가능한 파일인 경우
[ -x 파일명 ]
파일이 존재하고 실행 가능할 경우
[ !-옵션 파일명]
옵션의 조건이 아닐 경우
test.log 파일을 먼저 생성한 후 …
[root@server101 ~]# sh file_test1.sh
aaa
[root@server101 ~]# vi file_test1.sh
1 #!/bin/bash
2 echo ""
3 fname=/shell/test.log
4
5 if [ -f $fname ]
6 then
7 cat $fname
8 fi
9 echo ""
[root@server101 ~]# vi file_test2.sh
1 #!/bin/bash
2 echo ""
3 fname=/shell/test.log
4
5 if [ -s $fname ]
6 then
7 echo -n "Before: "
8 echo `ls -l /shell/test.log`
9 cat /dev/null > $fname -> 파일 크기를 0으로 만들기
10 fi
11 echo ""
12 echo -n "After: "
13 echo `ls -l /shell/test.log`
[root@server101 ~]# sh file_test2.sh
Before: -rw-r--r-- 1 root root 4 3월 13 11:16 /shell/test.log
After: -rw-r--r-- 1 root root 0 3월 13 12:10 /shell/test.log
분기문 : 조건문 = if , case
반복문 : while .for
if 문
if[조건] -> 조건 한개일 때
then
처리할 문장
fi
[root@server101 ~]# vi if_test1.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter fruit name: "
4 read a
5 echo ""
6 if [ $a = "apple" ]
7 then
8 echo "apple goot!"
9 fi
10 echo ""
[root@server101 ~]# sh if_test1.sh
Enter fruit name: apple
apple goot!
[root@server101 ~]# sh if_test1.sh
Enter fruit name: orange
if[조건] -> 조건 두개일 때
then
처리할 문장
else
처리할 문장
fi
[root@server101 ~]# vi if_test2.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter string : "
4 read a
5 echo ""
6
7 if [ $a = "apple" ]
8 then
9 echo "apple goot!"
10 else
11 echo "give me apple!"
12 fi
13 echo ""
[root@server101 ~]# sh if_test2.sh
Enter string : apple
apple goot!
[root@server101 ~]# sh if_test2.sh
Enter string : banana
give me apple!
if[조건]; then -> 조건 세개 이상일 때
처리할 문장
elif[조건];then
처리할 문장
else
처리할문장
fi
[root@server101 ~]# vi if_test3.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter string : "
4 read str
5 echo ""
6
7 if [ $str = "apple" ] ; then
8 echo "I like apple~!"
9 elif [ $str = "Orange" ] ; then
10 echo "I like orange"
11 else
12 echo "give me apple or Orange!!!!!"
13 fi
14
15 echo ""
[root@server101 ~]# sh if_test3.sh
Enter string : apple
I like apple~!
[root@server101 ~]# sh if_test3.sh
Enter string : orange -> 대소문자 구분하므로 조심!!!!
give me apple or Orange!!!!!
[root@server101 ~]# sh if_test3.sh
Enter string : Orange
I like orange
중첩 if문 (if 문장안에 다른 if사용)
if[조건];then
실행문장
exit
elif[조건]; then
실행문장
exit
else
if[조건]; then
실행문장
fi
fi
[root@server101 ~]# vi if_test4.sh
1 #!/bin/bash
2 echo ""
3 echo -n "Enter Number 1 or 2 :"
4 read a
5
6 if [ $a -eq 1 ]; then
7 echo "입력 받은 값은 $a입니다."
8 exit
9 elif [ $a -eq 2 ]; then
10 echo "입력 받은 값은 $a입니다."
11 exit
12 else
13 if [ $a -lt 0 ]; then
14 echo "값이 너무 작음.."
15 exit
16 elif [ $a -gt 2 ]; then
17 echo " 너무 크자너.."
18 exit
19 fi
20 fi
[root@server101 ~]# sh if_test4.sh
Enter Number 1 or 2 :1
입력 받은 값은 1입니다.
[root@server101 ~]# sh if_test4.sh
Enter Number 1 or 2 :2
입력 받은 값은 2입니다.
[root@server101 ~]# sh if_test4.sh
Enter Number 1 or 2 :3
너무 크자너..
[root@server101 ~]# sh if_test4.sh
Enter Number 1 or 2 :-1
값이 너무 작음..
조건을 동시에 사용하기
-> if [] -a [] (and)
-> if [] -o [] (or)
[root@server101 ~]# vi if_test5.sh
1
2 #!/bin/bash
3 echo ""
4 echo -n "Enter Number 1 or 2 :"
5 read a
6 echo ""
7
8 if [ \( $a -lt 1 \) -o \( $a -gt 2 \) ]; then
9 echo " 유효하지 않은 값임.."
10 exit
11 else
12 if [ \( $a -eq 1 \) -o \( $a -eq 2 \) ]; then
13 echo "입력 받은 값음 $a"
14 exit
15 fi
16 fi
[root@server101 ~]# sh if_test5.sh
Enter Number 1 or 2 :1
입력 받은 값음 1
[root@server101 ~]# sh if_test5.sh
Enter Number 1 or 2 :3
유효하지 않은 값임..
연습문제 1.
학생의 시험 성적을 입력 받아서 학점을 계산하는 스크립트를 작성하세요. 학점은 점수가 96-100:A+, 90-95:A0 , 86-89:B+, 80-85:B0, 76-79:C+, 70-75:C0, 66-69:D, 나머지는 F로 계산 . 그리고 100점이 넘는 점수는 So Big 메시지를 출력, 1점보다 적은 값이 들어오면 So small 이라는 메시지를 출력하고 스크립트를 종료하게 작성하시오
[root@server101 ~]# vi exam1.sh
9 if [ $A -gt 100 ]; then
10 echo "so Big!~!!!!!!"
11 exit
12 else
13 echo " So Small!!!!"
14 fi
15 else
16 if [ \( $A -gt 95 \) -a \( $A -lt 101 \) ]; then
17 echo " A+"
18 elif [ \( $A -gt 89 \) -a \( $A -lt 96 \) ]; then
19 echo "A0"
20 elif [ \( $A -gt 85 \) -a \( $A -lt 90 \) ]; then
21 echo "B+"
22 elif [ \( $A -gt 79 \) -a \( $A -lt 86 \) ]; then
23 echo "B0"
24 elif [ \( $A -gt 75 \) -a \( $A -lt 80 \) ]; then
25 echo "C+"
26 elif [ \( $A -gt 69 \) -a \( $A -lt 76 \) ]; then
27 echo "C0"
28 elif [ \( $A -gt 65 \) -a \( $A -lt 70 \) ]; then
29 echo "D"
30 else
31 echo "F"
32 fi
33 fi
[root@server101 ~]# sh exam1.sh
학생의 성적을 입력하세요 :78
C+
[root@server101 ~]# sh exam1.sh
학생의 성적을 입력하세요 :90
A0
[root@server101 ~]# sh exam1.sh
학생의 성적을 입력하세요 :100
A+
[root@server101 ~]# sh exam1.sh
학생의 성적을 입력하세요 :8
F
[root@server101 ~]# sh exam1.sh
학생의 성적을 입력하세요 :30
F
[root@server101 ~]# sh exam1.sh
학생의 성적을 입력하세요 :66
D
연습문제 2. 학생으로부터 지역번호를 입력 받아서 지역명을 출력하는 스크립트를 작성하시오, 지역번호가 02:Seoul. 031:Kyoungki, 051: Busan, 052 : Ulsan .나머지는 Heaven으로 출력합니다. 단 지역번호가 0보다 작거나 100보다 크면 “Check Your number!!!” 메시지 출력수 스크립트를 종료하게 작성하시오
[root@server101 ~]# vi exam2.sh
#!/bin/bash
echo ""
echo -n "지역번호를 입력하세요 : "
read A
if [ \( $A -lt 0 \) -o \( $A -gt 100 \) ]; then
echo " Check your Number !!!!"
exit
else
if [ $A = "02" ]; then
echo "서울"
elif [ $A = "031" ]; then
echo "경기"
elif [ $A = "051" ]; then
echo "부산"
elif [ $A = "052" ]; then
echo "울산"
else
echo "Heaven"
fi
fi
지역번호를 입력하세요 : 02
서울
[root@server101 ~]# sh exam2.sh
지역번호를 입력하세요 : 031
경기
[root@server101 ~]# sh exam2.sh
지역번호를 입력하세요 : 051
부산
[root@server101 ~]# sh exam2.sh
지역번호를 입력하세요 : 032
Heaven
case : 경우의 수가 여러개 일 경우에 유용
case 변수 in
패턴 1)
실행명령 ;;
패턴 2)
실행명령 ;;
*) -> 1.도 아니고 2 도 아닐경우
실행명령 ;;
esac
[root@server101 ~]# vi case_test1.sh
#!/bin/bash
echo ""
echo "
[1] Web Server backup
[2] WAS Server backup
[3] DB Server backup "
echo ""
echo -n "Enter your choice :"
read a
echo ""
case $a in
1)
sh /shell/web_backup.sh ;;
2)
sh /shell/was_backup.sh ;;
3)
sh /shell/db_backup.sh ;;
*)
echo "Enter [ 1, 2, 3 ]"
esac
[root@server101 ~]# sh case_test1.sh
[1] Web Server backup
[2] WAS Server backup
[3] DB Server backup
Enter your choice :1
Web Server Backup Start!!
[root@server101 ~]# sh case_test1.sh
[1] Web Server backup
[2] WAS Server backup
[3] DB Server backup
Enter your choice :2
WAS Server Backup Start~~~!
[root@server101 ~]# sh case_test1.sh
[1] Web Server backup
[2] WAS Server backup
[3] DB Server backup
Enter your choice :3
DB Server Backup Start~~!!
[root@server101 ~]# sh case_test1.sh
[1] Web Server backup
[2] WAS Server backup
[3] DB Server backup
Enter your choice :5
Enter [ 1, 2, 3 ]
for 변수명 in 값1 값2 값3
do
실행할 문장
done
- 화면에 1-5까지 출력
[root@server101 shell]# vi for_test1.sh 1 #!/bin/bash 2 for i in 1 2 3 4 5 3 do 4 echo "$i" 5 done 6 echo "" [root@server101 shell]# sh for_test1.sh 1 2 3 4 5
- 반복횟수 부분의 변형
[root@server101 shell]# vi for_test2.sh
\#!/bin/bash
count=`ls /shell` -> 변수 뒤에 =와 꼭 붙일것! 안붙이면 실행 안됨 !
for i in $count
do
echo "$i"
done
echo ""
[root@server101 shell]# sh for_test2.sh
db_backup.sh
echo_test1.sh
echo_test2.sh
echo_test3.sh
echo_test4.sh
echo_test5.sh
echo_test6.sh
test.log
test1.sh
was_backup.sh
web_backup.sh
``
* 반복 횟수 부분의 변형 2
```cpp
[root@server101 shell]# vi for_test3.sh
1 #!/bin/bash
2 echo ""
3 count=`ls /shell`
4
5 for i in $count
6 do
7 echo "Easy Shell Script"
8 done
[root@server101 shell]# sh for_test3.sh -> 파일 수만큼 복사해서 출력
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
Easy Shell Script
- 중첩 for문
[root@server101 shell]# vi for_test4.sh #!/bin/bash echo"" for i in a b c do for j in 1 2 3 do echo "\$i=$i , \$j=$j" -> $을 문자 그대로 출력하기 위해 \역슬래시 사용! done done [root@server101 shell]# sh for_test4.sh $i=a , $j=1 $i=a , $j=2 $i=a , $j=3 $i=b , $j=1 $i=b , $j=2 $i=b , $j=3 $i=c , $j=1 $i=c , $j=2 $i=c , $j=3
*2단 출력하기
[root@server101 shell]# vi for_test5.sh
\#!/bin/bash
echo ""
for i in 2
do
for j in 1 2 3 4 5 6 7 8 9
do
gob=`expr $i \* $j` -> =사이에 띄어쓰는 곳 없도록 조심 !
echo " $i X $j = $gob"
done
done
[root@server101 shell]# sh for_test5.sh
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
주의 사항 !
- expr 구분에 반드시 역따옴표를 쓰기
- *연산자와 괄호 뒤에는 \역슬래시를 꼭 붙이기
- expr 구분 안에서의 모든 연산자와 기호, 변수 사이에는 공백으로 한 칸씩 띄우기
while [조건문 ] - 조건을 만족할 경우 반복 수행
do
반복할 문장
done
while 문과 for문의 차이
- for : 반복 횟수가 결정되어 잇음
- while : 사용자가 중지 할 때까지 수행
* 예1)
[root@server101 shell]# vi while_test1.sh
\#!/bin/bash
num=1
while [ \( $num -eq 1 \) -o \( $num -eq 2 \) ]
do
echo -n "Enter Number :"
read num
echo "God Bless you~!!"
echo ""
done
echo "Incorrect Number"
echo "Good bye~"
[root@server101 shell]# sh while_test1.sh
Enter Number :1
God Bless you~!!
Enter Number :2
God Bless you~!!
Enter Number :3
God Bless you~!!
Incorrect Number
Good bye~
예2) 사용자가 y나 Y를 입력할 때까지 계속 “Enter y| Y”출력하게 하고 맞게 입력하면 Good출력하고 종료…
[root@server101 shell]# vi while_test2.sh
#!/bin/bash
A=a
while [ \( $A != "Y" \) -a \( $A != "y" \) ]
do
echo -n "Enter Y | y : "
read A
done
echo "Good!"
[root@server101 shell]# sh while_test2.sh
Enter Y | y : a
Enter Y | y : b
Enter Y | y : y
Good!
예3) while을 이용하여 사용자에게 단수를 입력 받은 후 해당 구구단을 출력하는 스크립트
[root@server101 shell]# vi while_test3.sh
#!/bin/bash
echo -n " 단수를 입력하세요 : "
read a
i=1
while [ $i -lt 10 ]
do
gob=`expr $a \* $i `
echo " $a X $i = $gob "
i=`expr $i + 1`
done
[root@server101 shell]# sh while_test3.sh
단수를 입력하세요 : 3
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
연습문제 )
사용자에게 원하는 단 수를 입력 받아 해당 단 수의 구구단을 출력 한 후 “Retry? y|Y : “ 메시지를 보인 후 y를 누르면 다시 원하는 단수를 입력받아 출력하게 하고 만약 다른문자를 누르면 종료하는 스크립트
[root@server101 shell]# vi while_exam1.sh
#!/bin/bash
t=y
i=1
while [ \( $t = "y" \) -o \( $t = "Y" \) ]
do
echo -n " 단수를 입력하세요 : "
read a
while [ $i -lt 10 ]
do
gob=`expr $a \* $i `
echo " $a X $i = $gob "
i=`expr $i + 1`
done
echo -n " Retry? Y |y :"
read t
i=1
done
[root@server101 shell]# sh while_exam1.sh
단수를 입력하세요 : 3
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
Retry? Y |y :y
단수를 입력하세요 : 5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
Retry? Y |y :Y
단수를 입력하세요 : 4
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
Retry? Y |y :f
util [ 조건문 ]
do
실행할 문장
done
-> 조건문이 거짓이면 반복문을 수행하고 조건문이 참이면 반복문을 끝낸다.
[root@server101 shell]# vi until_test1.sh
#!/bin/bash
echo -n " Enter Number : "
read dan
echo ""
num=1
until [ $num -eq 10 ]
do
gob=`expr $dan \* $num `
echo " $dan X $num = $gob "
num=`expr $num + 1 `
done
[root@server101 shell]# sh until_test1.sh
Enter Number : 4
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
연습문제 1
for문으로 구구단 만들기
[root@server101 shell]# vi for1.sh
1 #!/bin/bash
2
3 for dan in 2 3 4 5 6 7 8 9
4 do
5 echo " $dan 단 "
6 for i in 1 2 3 4 5 6 7 8 9
7 do
8 gob=`expr $dan \* $i`
9 echo " $dan X $i = $gob "
10 done
11 done
[root@server101 shell]# sh for1.sh
2 단
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
3 단
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
4 단
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
5 단
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
6 단
6 X 1 = 6
6 X 2 = 12
6 X 3 = 18
6 X 4 = 24
6 X 5 = 30
6 X 6 = 36
6 X 7 = 42
6 X 8 = 48
6 X 9 = 54
7 단
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
8 단
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
9 단
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
while문으로 구구단 만들기
[root@server101 shell]# vi while1.sh
#!/bin/bash
dan=2
i=1
while [ \( $dan -ge 2 \) -a \( $dan -le 9 \) ]
do
echo " $dan 단"
i=1
while [ $i -lt 10 ]
do
gob=`expr $dan \* $i `
echo "$dan X $i = $gob"
i=` expr $i + 1 `
done
dan=`expr $dan + 1`
done
구구단 옆으로 만들기
[root@server101 shell]# vi gugu.sh
#!/bin/bash
for num in 1 2 3 4 5 6 7 8 9
do
for dan in 2 3 4 5
do
gob=`expr $dan \* $num `
echo -n " $dan X $num = $gob "
done
echo ""
done
echo ""
for num in 1 2 3 4 5 6 7 8 9
do
for dan in 6 7 8 9
do
gob=` expr $dan \* $num `
echo -n " $dan X $num = $gob "
done
echo ""
done
[root@server101 shell]# sh gugu.sh
2 X 1 = 2 3 X 1 = 3 4 X 1 = 4 5 X 1 = 5
2 X 2 = 4 3 X 2 = 6 4 X 2 = 8 5 X 2 = 10
2 X 3 = 6 3 X 3 = 9 4 X 3 = 12 5 X 3 = 15
2 X 4 = 8 3 X 4 = 12 4 X 4 = 16 5 X 4 = 20
2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25
2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30
2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35
2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40
2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45
6 X 1 = 6 7 X 1 = 7 8 X 1 = 8 9 X 1 = 9
6 X 2 = 12 7 X 2 = 14 8 X 2 = 16 9 X 2 = 18
6 X 3 = 18 7 X 3 = 21 8 X 3 = 24 9 X 3 = 27
6 X 4 = 24 7 X 4 = 28 8 X 4 = 32 9 X 4 = 36
6 X 5 = 30 7 X 5 = 35 8 X 5 = 40 9 X 5 = 45
6 X 6 = 36 7 X 6 = 42 8 X 6 = 48 9 X 6 = 54
6 X 7 = 42 7 X 7 = 49 8 X 7 = 56 9 X 7 = 63
6 X 8 = 48 7 X 8 = 56 8 X 8 = 64 9 X 8 = 72
6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81
[root@server101 shell]# vi whilegugu.sh
#!/bin/bash
num=1
while [ $num -lt 10 ]
do
dan=2
while [ $dan -lt 6 ]
do
gob=`expr $dan \* $num `
echo -n " $dan X $num = $gob "
dan=`expr $dan + 1 `
done
echo ""
num=`expr $num + 1 `
done
echo""
num=1
while [ $num -lt 10 ]
do
dan=6
while [ $dan -lt 10 ]
do
gob=`expr $dan \* $num `
echo -n " $dan X $num = $gob "
dan=`expr $dan + 1 `
done
echo ""
num=`expr $num + 1 `
done
별 스크립트
문제1 답
#!/bin/bash
echo ""
echo -n "Enter number: "
read num
echo ""
i=1
while [ $i -le $num ]
do
j=1
while [ $j -le $i ]
do
echo -n "*"
j=`expr $j + 1 `
done
i=`expr $i + 1 `
echo ""
done
echo ""
별 스크립트
문제2 답
#!/bin/bash
echo ""
echo -n "Enter number: "
read num
echo ""
i=1
while [ $i -le $num ]
do
j=1
k=`expr $num - $i`
while [ $j -le $num ]
do
if [ $j -le $k ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1 `
done
i=`expr $i + 1 `
echo ""
done
echo ""
별 스크립트
문제3 답
#!/bin/bash
echo ""
echo -n "Enter number: "
read num
echo ""
i=1
while [ $i -le $num ]
do
j=1
k=`expr $num - $i`
l=`expr $num + $i - 1`
while [ $j -le $l ]
do
if [ $j -le $k ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done
i=`expr $i + 1`
echo ""
done
echo ""
별 스크립트
문제4 답
#!/bin/bash
echo ""
echo -n "Enter number: "
read num
echo ""
i=1
while [ $i -le $num ]
do
j=1
k=`expr $num - $i + 1`
while [ $j -le $k ]
do
echo -n "*"
j=`expr $j + 1`
done
i=`expr $i + 1`
echo ""
done
echo ""
별 스크립트
문제5 답
#!/bin/bash
echo ""
echo -n "Enter number: "
read num
echo ""
i=1
while [ $i -le $num ]
do
j=1
k=`expr $num \* 2 - $i`
while [ $j -le $k ]
do
if [ $j -lt $i ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done
i=`expr $i + 1`
echo ""
done
echo ""
별 스크립트
문제6 답
#!/bin/bash
echo ""
echo -n "Enter number: "
read num
echo ""
i=1
while [ $i -le $num ]
do
j=1
k=`expr $num - $i`
l=`expr $num - 1 + $i`
while [ $j -le $l ]
do
if [ $j -le $k ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done
i=`expr $i + 1`
echo ""
done
i=1
while [ $i -le $num ]
do
j=1
k=`expr $num \* 2 - $i - 1`
while [ $j -le $k ]
do
if [ $j -le $i ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done
i=`expr $i + 1`
echo ""
done
echo ""
'Linux' 카테고리의 다른 글
리눅스 디스크 관리 및 추가 (0) | 2014.10.31 |
---|---|
리눅스(linux) LVM 디스크 관리 및 추가 (0) | 2014.10.31 |
lunux(리눅스) 압축 파일 관리 (compress.tar, gzip 등) (0) | 2014.10.31 |
리눅스에 iptraf3.0 설치 (1) | 2014.10.31 |
DNS 서버구축 (0) | 2014.10.31 |