본문 바로가기

IaC Application/SHELL

SHELL

제어문

case

#!/bin/bash

echo "###### httpd service script ######"
echo "start : s , stop : t , restart : r , status : u"
echo -n "원하는 작업을 선택하시오 : "
read sel

case "$sel" in
s)
    echo "start service"
    systemctl start httpd
    ;;
t)
    echo "stop service"
    systemctl stop httpd
    ;;
r)
    echo "restart service"
    systemctl restart httpd
    ;;
u)
    echo "status service"
    systemctl status httpd
    ;;
*)
    echo "지정된 작업을 선택해주세요"
    ;;
esac

 

select

#!/bin/bash
PS3=" 메뉴 선택: "
select i in 'pwd' 'date' 'ls' 'exit'
do
    $i
done

--실행
[root@localhost ~]# sh /root/select_01.sh
1) pwd
2) date
3) ls
4) exit
 메뉴 선택: 1
/root
 메뉴 선택: 2
2024. 03. 20. (수) 09:37:30 KST
 메뉴 선택: 3
1.c              if_digit.sh                 select_01.sh
1.sh             if_file.sh                  t1.txt
a.out            if_not.sh                   t2.txt
anaconda-ks.cfg  if_or.sh                    t3.txt
case_01.sh       if_string.sh                test.txt
dir1             let.sh                      test01
dirl             listvar.sh                  tmp.txt
dis.sh           mysqldump_all_db.sql        tmp1.txt
echo.sh          mysqldump_db_table.sql      공개
err.txt          mysqldump_db_table_row.sql  다운로드
err1.txt         mysqldump_dump_db.sql       문서
error.txt        mysqldump_naver_db.sql      바탕화면
expr.sh          naver_db.sql                비디오
global_local.sh  ok.txt                      사진
hahaha.txt       parameter.sh                서식
hello.txt        pass                        음악
hi.txt           read.sh
if_and.sh        read_let.sh
 메뉴 선택: 4

 

shell script 작성 실습

#!/bin/bash
echo "====== 사칙연산 프로그램 ======"
echo "1) 더하기"
echo "2) 빼기"
echo "3) 곱하기"
echo "4) 나누기"
echo -n "메뉴 선택: "
read sel

if [[ "$sel" -eq 5 ]]; then
    echo -e "잘못된 메뉴를 선택하셨습니다.\n프로그램을 종료합니다."
    exit 0
elif [[ "$sel" -lt 1 || "$sel" -gt 5 ]]; then
    echo -e "잘못된 선택입니다.\n프로그램을 종료합니다."
    exit 1
else
    echo -n "숫자1 입력: "
    read num1
    echo -n "숫자2 입력: "
    read num2

    case "$sel" in
        1)
            let "sum = num1 + num2"
            echo "덧셈 결과: $sum"
            ;;
        2)
            let "sub = num1 - num2"
            echo "뺄셈 결과: $sub"
            ;;
        3)
            let "mul = num1 * num2"
            echo "곱셈 결과: $mul"
            ;;
        4)
            if [[ "$num2" -eq 0 ]]; then
                echo "0으로 나눌 수 없습니다."
            else
                let "div = num1 / num2"
                echo "나눗셈 결과: $div"
            fi
            ;;
    esac
fi

--결과 확인

-더하기
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 1
숫자1 입력: 8
숫자2 입력: 9
덧셈 결과: 17

-빼기
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 2
숫자1 입력: 8
숫자2 입력: 9
뺄셈 결과: -1

-곱하기
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 3
숫자1 입력: 8
숫자2 입력: 9
곱셈 결과: 72

-나누기
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 4
숫자1 입력: 90
숫자2 입력: 2
나눗셈 결과: 45

-잘못된 메뉴 선택
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 5
잘못된 메뉴를 선택하셨습니다.
프로그램을 종료합니다.

-종료 메뉴까지 5번으로 설정하였으나 다른 문자로 선택했을경우 
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 6
잘못된 선택입니다.
프로그램을 종료합니다.

-0으로 못나누게 설정한거 확인
[root@localhost ~]# sh /root/calc.sh
====== 사칙연산 프로그램 ======
1) 더하기
2) 빼기
3) 곱하기
4) 나누기
메뉴 선택: 4
숫자1 입력: 2
숫자2 입력: 0
0으로 나눌 수 없습니다.

 

for

#!/bin/bash
#dir=/var/log
#backup_dir=/tmp1

echo -n "원본 디렉터리 입력 : ";read dir
echo -n "복사할 디렉터리 입력 : ";read backup_dir

for file in $(ls $dir)
do
 if [ -f $dir/$file ]
 then
    cp $dir/$file $backup_dir/$file
 elif [ -d $dir/$file ]
 then
    cp -r $dir/$file $backup_dir/$file
fi
done

--실행 후 확인
[root@localhost ~]# sh for_01.sh
원본 디렉터리 입력 : /var/log
복사할 디렉터리 입력 : /tmp1
[root@localhost ~]# ls /tmp1/
README             gdm                tallylog
anaconda           hawkey.log         tuned
audit              httpd              vmware-network.1.log
boot.log           kdump.log          vmware-network.2.log
boot.log-20240318  lastlog            vmware-network.3.log
boot.log-20240319  maillog            vmware-network.4.log
boot.log-20240320  mariadb            vmware-network.5.log
btmp               messages           vmware-network.6.log
chrony             private            vmware-network.log
cron               qemu-ga            vmware-vgauthsvc.log.0
cups               samba              vmware-vmsvc-root.log
dnf.librepo.log    secure             vmware-vmtoolsd-root.log
dnf.log            speech-dispatcher  vmware-vmusr-root.log
dnf.rpm.log        spooler            wtmp
firewalld          sssd

--복사할 디렉터리 삭제 후 실행
[root@localhost ~]# rm -rf /tmp1
[root@localhost ~]# ls -ld /tmp1
ls: cannot access '/tmp1': 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# sh for_01.sh
원본 디렉터리 입력 : /var/log
복사할 디렉터리 입력 : /tmp1
cp: cannot create regular file '/tmp1/README': 그런 파일이나 디렉터리가 없습니다
cp: '/tmp1/anaconda' 디렉토리를 만들 수 없습니다: 그런 파일이나 디렉터리가 없습니다
cp: '/tmp1/audit' 디렉토리를 만들 수 없습니다: 그런 파일이나 디렉터리가 없습니다
~

--디렉터리 없으면 만들 수 있도록
#!/bin/bash
#dir=/var/log
#backup_dir=/tmp1

echo -n "원본 디렉터리 입력 : ";read dir
echo -n "복사할 디렉터리 입력 : ";read backup_dir

#복사본 디렉터리가 없는 경우 > 생성 > 777 퍼미션 부여
if [ ! -e $backup_dir ]
then
    mkdir $backup_dir
    chmod 777 $backup_dir
fi

#원본 파일/디렉터리를 복사한다
for file in $(ls $dir)
do
 if [ -f $dir/$file ]
 then
    cp $dir/$file $backup_dir/$file
 elif [ -d $dir/$file ]
 then
    cp -r $dir/$file $backup_dir/$file
fi
done

--실행
[root@localhost ~]# sh for_01.sh
원본 디렉터리 입력 : /var/log
복사할 디렉터리 입력 : /tmp1
[root@localhost ~]# ls /tmp1
README             gdm                tallylog
anaconda           hawkey.log         tuned
audit              httpd              vmware-network.1.log
boot.log           kdump.log          vmware-network.2.log
boot.log-20240318  lastlog            vmware-network.3.log
boot.log-20240319  maillog            vmware-network.4.log
boot.log-20240320  mariadb            vmware-network.5.log
btmp               messages           vmware-network.6.log
chrony             private            vmware-network.log
cron               qemu-ga            vmware-vgauthsvc.log.0
cups               samba              vmware-vmsvc-root.log
dnf.librepo.log    secure             vmware-vmtoolsd-root.log
dnf.log            speech-dispatcher  vmware-vmusr-root.log
dnf.rpm.log        spooler            wtmp
firewalld          sssd
--1부터 10까지의 누적합을 계산
#!/bin/bash
# 1부터 10까지의 누적합을 계산
# i, 누적합sum
sum=0
for i in 1 2 3 4 5 6 7 8 9 10
do
 let "sum=$sum+$i"
 echo "1=$i,sum=$sum"
done

--실행
[root@localhost ~]# sh /root/for_03.sh
1=1,sum=1
1=2,sum=3
1=3,sum=6
1=4,sum=10
1=5,sum=15
1=6,sum=21
1=7,sum=28
1=8,sum=36
1=9,sum=45
1=10,sum=55

--list 변수
#!/bin/bash
# 1부터 10까지의 누적합을 계산
# i, 누적합sum
sum=0
#for i in 1 2 3 4 5 6 7 8 9 10
listvar=(1 2 3 4 5 6 7 8 9 10)
for i in ${listvar[*]}
do
 let "sum=$sum+$i"
 echo "1=$i,sum=$sum"
done

--실행
[root@localhost ~]# sh /root/for_03.sh
1=1,sum=1
1=2,sum=3
1=3,sum=6
1=4,sum=10
1=5,sum=15
1=6,sum=21
1=7,sum=28
1=8,sum=36
1=9,sum=45
1=10,sum=55

--다른방식
#!/bin/bash
# 1부터 10까지의 누적합을 계산
# i, 누적합sum
sum=0
#for i in 1 2 3 4 5 6 7 8 9 10
#listvar=(1 2 3 4 5 6 7 8 9 10)
#for i in ${listvar[*]}
for ((i=1 ; i<=10 ; i++)) #초기값 ; 종료값 ; 증감값
do
 let "sum=$sum+$i"
 echo "1=$i,sum=$sum"
done

--실행
[root@localhost ~]# sh /root/for_03.sh
1=1,sum=1
1=2,sum=3
1=3,sum=6
1=4,sum=10
1=5,sum=15
1=6,sum=21
1=7,sum=28
1=8,sum=36
1=9,sum=45
1=10,sum=55

for문 과제

#!/bin/bash
#특정 숫자를 입력받아 해당 숫자 범위안의 짝수의 합만 산출
#-짝수 : 2로 나눈 나머지가 0인것
#ex) let "num=$i%2", num=0이면 짝수

echo -n "숫자 입력: "
read upper_limit 

for ((i=1; i<=upper_limit; i++));
do
 let "num=$i%2"
 if [ $num -eq 0 ];then
    echo "$i 은(는) 짝수"
fi
if ((i % 2 == 0)); then
    let "sum+=i"
fi
done
echo "$upper_limit의 짝수 합: $sum"

--실행
[root@localhost ~]# sh /root/for_04.sh
숫자 입력: 10
2 은(는) 짝수
4 은(는) 짝수
6 은(는) 짝수
8 은(는) 짝수
10 은(는) 짝수
10의 짝수 합: 30

--더 간단하게
echo -n "숫자 입력: "
read even_number 

sum=0 # 짝수의 합을 저장할 변수 초기화

for ((i=1; i<=even_number; i++)); do
    if ((i % 2 == 0)); then
        let "sum+=i"
        echo "$i 은(는) 짝수"
    fi
done

echo "$even_number의 짝수 합: $sum"

과제 주제는 특정 숫자를 입력받아 해당 숫자 범위안의 짝수의 합만 산출이라는 주제였으나, 

저는 짝수가 출력되는것도 확인하고싶어서 추가로 짝수를 확인하는 명령어를 추가했습니다.

--강사님 script
#!/bin/bash
#특정 숫자를 입력받아 해당 숫자 범위안의 짝수의 합만 산출
#-짝수 : 2로 나눈 나머지가 0인것
#ex) let "num=$i%2", num=0이면 짝수

echo -n "숫자 입력: "
read even_number

for ((i=1; i<=even_number; i++));
do
 let "num=$i%2"
 if [ $num -eq 0 ];then
    #echo "$i 은(는) 짝수"
    let "sum+=i"
    echo "현재 증가값 : $i , 현재 누적합: $sum"
fi
done

--실행
[root@localhost ~]# sh /root/for_04.sh
숫자 입력: 20
현재 증가값 : 2 , 현재 누적합: 2
현재 증가값 : 4 , 현재 누적합: 6
현재 증가값 : 6 , 현재 누적합: 12
현재 증가값 : 8 , 현재 누적합: 20
현재 증가값 : 10 , 현재 누적합: 30
현재 증가값 : 12 , 현재 누적합: 42
현재 증가값 : 14 , 현재 누적합: 56
현재 증가값 : 16 , 현재 누적합: 72
현재 증가값 : 18 , 현재 누적합: 90
현재 증가값 : 20 , 현재 누적합: 110

 이중for문

#!/bin/bash

for i in 1 2 3
do
    echo $i
    for j in 11 12 13
    do
        echo "$i:$j"
    done 
done

--실행
[root@localhost ~]# sh /root/for_05.sh
1
1:11
1:12
1:13
2
2:11
2:12
2:13
3
3:11
3:12
3:13

구구단 출력

#!/bin/bash
for ((i=2 ; i<=9 ; i++))
do
    for ((j=2 ; j<=9 ; j++))
    do
        let "gugu=$i*$j"
        echo "$i X $j = $gugu"
    done
done

--실행
[root@localhost ~]# sh /root/gugudan_01.sh
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
~~
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

--각 단 별로 세로 출력
#!/bin/bash

echo -n "단수를 입력하세요: ";read dan


for ((i=2 ; i<=$dan ; i++))
do
    for j in 1 2 3 4 5 6 7 8 9
    do
        let "gugu=$i*$j"
        echo -ne "$i X $j = $gugu\t"
    done 
    echo -e "\n"
done

--실행
[root@localhost ~]# sh /root/gugudan_01.sh
단수를 입력하세요: 9
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 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 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 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 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 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 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 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

--짝수 단만 출력
#!/bin/bash
for ((i=2 ; i<=9 ; i++))
do
    let "num=$i%2"
    if [ $num -eq 0 ];then
    echo "##### 단 시작 #####"
    for ((j=2 ; j<=9 ; j++))
    do
        let "gugu=$i*$j"
        echo "$i X $j = $gugu"
    done
    echo -e "\n"
    fi
done

--실행
[root@localhost ~]# sh /root/gugudan_01.sh
##### 단 시작 #####
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


##### 단 시작 #####
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


##### 단 시작 #####
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


##### 단 시작 #####
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

while 문

#!/bin/bash
# while : 조건에 맞으면 계속 실행
# 제시하는 숫자(i)가 비교하려는 숫자(j)보다 작으면 계속 출력(해당 숫자가 1씩 증가하여 5가 될 때 까지)

i=1
j=5

while [ $i -lt $j ]
 do
    echo $i
    let "i++"
    sleep 5
done

--실행

#!/bin/bash
# countdown : 0이 되면 실행 하지 않을 것

count=10

until [ $count -lt 0 ]
do
    echo "count $count"
    sleep 1
    let "count=$count-1"
done

--실행
[root@localhost ~]# sh /root/while_02.sh
count 10
count 9
count 8
count 7
count 6
count 5
count 4
count 3
count 2
count 1
count 0

#!/bin/bash
#while 문을 for 문 처럼
#초기값 ; 종료값 ; 증가값
#count가 1씩 증가하면서 maxcount가 될 때

count=1

echo -n "반복할 횟수를 입력하세요: ";read maxcount

while [$count -le $maxcount]
do
    echo "$count 번째 반복"
    let "count=$count+1"
    sleep 2
done
echo "$maxcount 번째 반복"

--실행
[root@localhost ~]# sh /root/while_02.sh
반복할 횟수를 입력하세요: 10
1 번째 반복
2 번째 반복
3 번째 반복
4 번째 반복
5 번째 반복
6 번째 반복
7 번째 반복
8 번째 반복
9 번째 반복
10 번째 반복

while 문 예제

#!/bin/bash
# 두 개의 변수를 n1,n2를 입력 받음
# 입력받은 두개의 변수 n1,n2 사이의 누적합 sum 을 구한다.
#ex) n1=1 , n2=10 -> sum=55
# 테스트 할때는 n2 가 n1 보다 큰 숫자를 입력할 것
# while 문 사용 , 조건 : -le

sum=0

echo -n "n1 입력: ";read n1
echo -n "n2 입력: ";read n2

while [ $n1 -le $n2 ]
 do
    sum=$(($sum + $n1)) # n1을 sum에 더함
    n1=$(($n1 + 1))     # n1의 값을 1 증가
done

echo "$n1 부터 $n2 까지의 총합은 $sum 입니다."

--실행
[root@localhost ~]# sh /root/while_03.sh
n1 입력: 1
n2 입력: 10
11 부터 10 까지의 총합은 55 입니다.

#!/bin/bash
#!/bin/bash
# 두 개의 변수를 n1,n2를 입력 받음
# 입력받은 두개의 변수 n1,n2 사이의 누적합 sum 을 구한다.
#ex) n1=1 , n2=10 -> sum=55
# 테스트 할 때는 n2 가 n1 보다 큰 숫자를 입력할 것
# 테스트 할 때는 n2 가 n1 보다 큰 숫자를 입력할 것
# while 문 사용 , 조건 : -le

sum=0

echo -n "n1 입력: ";read n1
echo -n "n2 입력: ";read n2
if
while [ $n1 -le $n2 ]
    do
    sum=$(($sum + $n1)) # n1을 sum에 더함
    n1=$(($n1 + 1))     # n1의 값을 1 증가

else
while [ $n1 -ge $n2 ]
    do
    sum=$(($sum + $n2)) # n1을 sum에 더함
    n2=$(($n2 + 1))     # n1의 값을 1 증가
    done
done
fi

echo "$n1 부터 $n2 까지의 총합은 $sum 입니다."

--실행
[root@localhost ~]# sh /root/while_03.sh
n1 입력: 1
n2 입력: 10
11 부터 10 까지의 총합은 55 입니다.
[root@localhost ~]# sh /root/while_04.sh
n1 입력: 10
n2 입력: 1
11 부터 10 까지의 총합은 55 입니다.

무한loop

--무한루프 개념
#!/bin/bash

count=0

while true -- [ 1 ]을 쓸 수도 있으나 확실하게 true를 쓰는것이 좋다
do
 let "count=$count+1"
 echo "$count 번째 반복"
done

--실행시 멈추지 않음
[root@localhost ~]# sh /root/while_loop.sh
1 번째 반복
2 번째 반복
3 번째 반복
4 번째 반복
5 번째 반복
6 번째 반복
7 번째 반복
8 번째 반복
9 번째 반복
10 번째 반복
11 번째 반복
~~

--무한루프 제어
#!/bin/bash

#무한루프 제어
echo -n "반복할 횟수를 입력하세요 : "
read maxcount

# 횟수 초기화(횟수 계산의 시작점)
count=0

while [ 1 ]
do
 let "count=$count+1"
 echo "$count 번째 반복"
 if [ $count -eq $maxcount ];then
 echo "프로그램 종료"
 exit
 fi
done

--실행
[root@localhost ~]# sh /root/while_loop.sh
반복할 횟수를 입력하세요 : 10
1 번째 반복
2 번째 반복
3 번째 반복
4 번째 반복
5 번째 반복
6 번째 반복
7 번째 반복
8 번째 반복
9 번째 반복
10 번째 반복
프로그램 종료

#error > 0, success = 0
[root@localhost ~]# echo "hello"
hello
[root@localhost ~]# echo $?
0
[root@localhost ~]# aaaa
bash: aaaa: command not found...
[root@localhost ~]# echo $?
127
error > 0, success = 0

#!/bin/bash
echo " hello"
exit 100

--실행
[root@localhost ~]# sh /root/code.sh
 hello
[root@localhost ~]# echo $?
100

#!/bin/bash

#read를 이용하여 변수 입력
read -p "input y or n : "

# 255 이하
yes=200
no=210
error=220

if [[ "$REPLY" = "y" || "$REPLY" = "Y" ]]                  # 입력받는 문자가 y
then
        exit $yes
elif [[ "$REPLY" = "n" || "$REPLY" = "N" ]]                # 입력받는 문자가 n
then
        exit $no
else # y 도 n 도 아닌 경우
        exit $error
fi

--실행
[root@localhost ~]# sh code.sh
input y or n : y
[root@localhost ~]# echo $?
200
[root@localhost ~]# sh code.sh
input y or n : n
[root@localhost ~]# echo $?
210
[root@localhost ~]# sh code.sh
input y or n : e
[root@localhost ~]# echo $?
220
[root@localhost ~]# echo $?
0

#!/bin/bash

while true
do

--무한루프 계산기
echo "====== 사칙연산 프로그램 ======"
echo "1) 더하기"
echo "2) 빼기"
echo "3) 곱하기"
echo "4) 나누기"
echo -n "메뉴 선택(1~4): "
read sel

    echo -n "숫자1 입력: "
    read num1
    echo -n "숫자2 입력: "
    read num2
    case "$sel" in
        1)
            let "sum = num1 + num2"
            echo "덧셈 결과: $sum"
            ;;
        2)
            let "sub = num1 - num2"
            echo "뺄셈 결과: $sub"
            ;;
        3)
            let "mul = num1 * num2"
            echo "곱셈 결과: $mul"
            ;;
        4)
            if [[ "$num2" -eq 0 ]]; then
                echo "0으로 나눌 수 없습니다."
            else
                let "div = num1 / num2"
                echo "나눗셈 결과: $div"
            fi
            ;;
    esac
done

--while loop로 제어 후 종료할때 숫자 입력 안해도되도록



#!/bin/bash

while read A B C ETC
do
    echo "$A-$B-$C-$ETC"
done < /root/test.txt

--실행
[root@localhost ~]# sh /root/readfile_loop.sh
a-1-AAA-111
b-2-BBB-222

#!/bin/bash

#인자를 부여 , 실행된 스크립트명
echo $0
echo $1
echo $2


while read A B C ETC
do
    echo "$A-$B-$C-$ETC"
done < /root/test.txt

--실행
[root@localhost ~]# sh /root/readfile_loop.sh
/root/readfile_loop.sh


a-1-AAA-111
b-2-BBB-222

[root@localhost ~]# cp /root/test.txt /root/t.txt
[root@localhost ~]# vi /root/t.txt 

#!/bin/bash

#인자를 부여 , 실행된 스크립트명
echo $0
echo $1
echo $2

while read A B C ETC
do
    echo "$A-$B-$C-$ETC"
    done < $1

--실행
[root@localhost ~]# sh /root/readfile_loop.sh /root/t.txt
/root/readfile_loop.sh
/root/t.txt

a-1-AAA-111
b-2-BBB-222
c-3-CCC-333

'IaC Application > SHELL' 카테고리의 다른 글

정규표현식 - grep  (0) 2024.03.21
함수  (0) 2024.03.21