。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/리눅스

8-2 쉘 프로그래밍

quarrrter 2023. 5. 3. 20:12

 

k=50 // 띄어쓰기 x

모든 변수는 문자처리됨 ! string ~

 

쉘의 종류

Bourne Shell(sh)

C Shell

TC Shell

Korn Shell

Bourne Again Shell(bash)  / 리눅스의 기본 쉘

debian Shell(dash)

Zsh

 

리눅스 종료 상태 코드

0 성공

1 알 수 없는 오류, 일반적인 error

2 명령어 잘 못 사용 

127 명령어를 찾을 수 없음

 

BASH Shell 특수 값 

$? 바로 이전 명령의 상태 종료 값

$$ 현재 SHELL PID

$# 인수의 개수

$* 모든 매개변수를 하나로 참조

 

BASH Shell 메타문자(특수 의미)

|| or

&& 참일때 계속 실행

; 명령어 여러개 사용할 때

 

redirection

< 입력

> 출력 

>> 덧붙임 

 

조건문

$A -gt $B // great than

$A -lt $B // less than

$A -ge $B // great eqaul

$A -le $B // less equal

$A -eq $B // equal

$A -ne $B // not equal

 

파일관련 

-e // 존재여부

-d // directory

-f // 존재하고 일반 파일인가 

! -option // option이 거짓인 경우 

 

expr 명령 연산자

| or

& and

< less than

<= less equal

= equal

!= not eqaul

>= great equal

> great than 

 

 

예제

typeset -i  정수로 인식하겠다! 

if문 

vi a.sh

#!/bin/bash
typeset -i b=30
if [ $b -eq 30 ];
then
        echo "\$b = $b"
fi


jj@psh:~$ a.sh
$b = 30

if ~else문 

vi b.sh

#!/bin/bash
typeset -i b=30
if [ $b -eq 30 ];
then
        echo "\$b = $b "
else
        echo "\$b = $b "
fi


jj@psh:~$ b.sh
$b = 30

 

다중 if문

vi c.sh


#!/bin/bash
typeset -i b=30
if [ $b -ge 90 ];
then
        echo "\$b = $b A "
elif [ $b -ge 80 ];
then echo "\$b =$b B "
elif [ $b -ge 70 ];
then echo "\$b = $b C "
elif [ $b -ge 60 ];
then echo "\$b = $b D "
else
        echo "\$b = $b F"
fi



jj@psh:~$ c.sh
$b = 30 F

for문 

vi d.sh

#!/bin/bash

for a in aa bb cc dd
do
        echo " a = $a "
done


jj@psh:~$ d.sh
 a = aa
 a = bb
 a = cc
 a = dd

while문

vi e.sh


#!/bin/bash

n=1

while  [ $n -le 10 ]
do
        sum=`expr $sum + $n`
        echo "n = $n , sum = $sum "
        n=`expr $n + 1`
done

jj@psh:~$ e.sh
n = 1 , sum = 1
n = 2 , sum = 3
n = 3 , sum = 6
n = 4 , sum = 10
n = 5 , sum = 15
n = 6 , sum = 21
n = 7 , sum = 28
n = 8 , sum = 36
n = 9 , sum = 45
n = 10 , sum = 55

until문 

vi f.sh

#!/bin/bash

n=1

until [ $n -gt 10 ]
do
        sum=`expr $sum + $n`
        echo "n = $n, $sum "
        n=`expr $n + 1`
done


jj@psh:~$ f.sh
n = 1, 1
n = 2, 3
n = 3, 6
n = 4, 10
n = 5, 15
n = 6, 21
n = 7, 28
n = 8, 36
n = 9, 45
n = 10, 55

 

case문

vi g.sh

#!/bin/bash

var=1
case $var in
1)
        echo "Apple"
        ;;
2)
        echo "Grape" 
        ;;
3)
        echo "Kiwi"
        ;;
esac



jj@psh:~$ g.sh
Apple

 

continue, break

vi h.sh

#!/bin/bash

echo " == continue "
for(( i=0; i<10; ++i ))
do
        if(( i == 5 ))
        then
                continue;
        fi
        echo " \$i ==> $i ";

done


echo " == break "
for(( i=0; i<10; ++i ))
do
        if (( i == 5 ))
        then
                break;
        fi
        echo "\$i ==> $i ";

done


jj@psh:~$ h.sh
 == continue
 $i ==> 0
 $i ==> 1
 $i ==> 2
 $i ==> 3
 $i ==> 4
 $i ==> 6
 $i ==> 7
 $i ==> 8
 $i ==> 9
 == break
$i ==> 0
$i ==> 1
$i ==> 2
$i ==> 3
$i ==> 4