리눅스 10일차(2) - Shell Script
case 사용
case: 인자를 받아서 동일한 조건 존재 시 해당 값 출력
## case.sh
#!/bin/bash
case "$1" in
ko) echo "Seoul" ;;
us) echo "Washington" ;;
cn) echo "Beijing" ;;
jp) echo "Tokyo" ;;
*) echo "Enter the country name~!!"
esac
# !ch
# ./case.sh ko
Seoul
# ./case.sh jp
Tokyo
// 해당 조건의 값을 출력
# ./case.sh
Enter the country name~!!
# ./case.sh uk
Enter the country name~!!
// 인자가 없거나 해당 조건이 없을 시 defult ( *[defult란 뜻]) 출력
## case_new.ch // defult 와 인자가 없는 것 상황을 나눠서 표현하기
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Enter the country name" ;
else
case "$1" in
ko) echo "Seoul" ;;
us) echo "Washington" ;;
cn) echo "Beijing" ;;
jp) echo "Tokyo" ;;
*) echo "Your entry => $1 is not list." ;;
esac
fi
# ./case_new.sh
Enter the country name~!!
# ./case_new.sh uk
Your entry => $1 is not list.
## case1.sh // 점수에 따라 성적 주기 ex) 60점=D, 70점=C
#!/bin/bash
a=0
echo -n "Input : "
read a
let a=a/10
case $a in
10) echo "A" ;;
9) echo "A" ;;
8) echo "B" ;;
7) echo "C" ;;
6) echo "D" ;;
*) echo "F" ;;
esac
echo "Thank you ~ Bye!!"
# !ch
# ./case1.sh 80
B
for 사용
## for.sh
#!/bin/bash
for k in L I N U X
do
echo -n "$k"
done
echo
# ./for.sh
LINUX
// -n이 new line을 하지 않는 옵션이라 한 줄에 출력된다.
## for1.sh
#!/bin/bash
for k in L I N U X
do
echo "$k"
done
# ./for1.sh
L
I
N
U
X
// -n이 안 붙였기에 하나씩 출력된다.
## for2.sh // row에 들어있는 one two three를 하나씩 넣어 뒤에 0~8까지 출력하는 코드
#!/bin/bash
row="one two three"
for mon in $row; do
for((i=0;i<9;i++)) do
echo "$mon $i"
done
done
// 출력값이 너무 길기에 생략
## while.sh // 구구단
#!/bin/bash
a=1
while [ $a != "0" ]; do
echo -n "Input : "
read a
if [ $a != "0" ]; then
for k in 1 2 3 4 5 6 7 8 9
do
echo "$a * $k = `expr $a \* $k`"
done
fi
done
echo Exit
# ./whlie.sh
Input : 5
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
Input : 0
Exit
## while_new.sh // 구구단 수정1
#!/bin/bash
a=1
while [ $a != "0" ]; do
echo -n "Input : "
read a
if [ $a != "0" ]; then
for ((k=1;k<=9;k++)) do
echo "$a * $k = `expr $a \* $k`"
done
fi
done
echo Exit
// for k in 1 2 3 4 5 6 7 8 9 -> for ((k=1;k<=9;k++))로 바꿔도 된다.
## while2.sh // 구구단 수정2 - 비교연산자 사용하기
#!/bin/bash
a=1
while [ $a != "0" ]; do
echo -n "Input : "
read a
if [ $a -gt 1 -a $a -lt 10 ]; then
for k in 1 2 3 4 5 6 7 8 9
do
echo "$a * $k = `expr $a \* $k`"
done
elif [ $a -eq 0 ]; then
break;
else
echo "2~9 input plz"
fi
done
echo Exit
- 비교연산자
비교 연산자 | 설명 |
A -eq B | A와 B의 값이 같다. |
A -ne B | A와 B의 값이 같지 않다. |
A -qt B | A와 B보다 크다. |
A -lt B | A와 B보다 작다. |
A -ge B | A와 B보다 크거나 같다. |
A -le B | A와 B보다 크거나 같다. |
연산자 | 설명 |
-a | AND |
-o | OR |
>> if [ $a -gt 1 -a $a -lt 10 ]; then // read한 값이 1보다 크고 10보다 작다
#./while2.sh
Input : 10
The number of inputs must be between 2 and 9.
Input : -1
The number of inputs must be between 2 and 9.
Input : 2
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
Input : 0
Exit
## while3.sh // 구구단 수정
#!/bin/bash
a=1
while [ $a != "0" ]; do
echo -n "Input : "
read a
if [ $a -gt 1 ] && [ $a -lt 10 ]; then
for k in 1 2 3 4 5 6 7 8 9
do
echo "$a * $k = `expr $a \* $k`"
done
elif [ $a -eq 0 ]; then
break;
else
echo "2~9 input plz"
fi
done
echo Exit
// [ $a -gt 1 -a $a -lt 10 ] 라는 조건을 [ $a -gt 1 ] && [ $a -lt 10 ]로 수정 가능
## while4.sh // 첫번째 파라미터를 읽어서 파라미터보다 크거나 같고 10 보다 작은 수를 출력하는 것
#!/bin/bash
row=$1
if [ $# -eq 0 ]; then
echo "This program is have to one parameter~!!"
else
while [[ 10 -gt $row ]]; do
echo $row
row=`echo "$row" +1 | bc`
done
fi
// bc란 수학적으로 연산해주는 명령어
# ./whlie4.sh
This program is have to one parameter~!!
# ./whlie4.sh 5
5
6
7
8
9