Linux

리눅스 10일차(2) - Shell Script

느긋한모모 2024. 3. 18. 14:01

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