임베디드

[리눅스] Bash 쉘 프로그래밍 : 입출력, 변수, 주석, if문

히똔 2022. 4. 3. 18:37
728x90
반응형

쉘에서 쓰는 언어는 생소하다. 그래서 새로 배워야함!

 

출력

echo 명령어를 이용한다.

echo HI

 

입력

read 명령어를 이용한다.

read input
echo $input

 

변수 생성

변수이름=값 으로 변수를 만들 수 있다.

first=100
second=200

echo $first + $second

이 코드의 출력값이 어떻게 될거 같은가?
300일 것 같지만 땡~~! 100 + 200 이 출력된다. 
모든 값들은 문자열로 취급하기 때문에 주의해야한다.

그렇다면 300이 나오게 하려면 어떻게 해야할까!!

$(( )) 를 이용해서 산술연산 처리를 할 수 있다.

echo $(( $first + $second ))

이렇게 코드를 짜면 300이 나온다.

 

Argument 변수

변수를 굳이 따로 생성하지 않아도 입력 순서로 입력값을 조정할 수 있다.

echo $(( $1 + $2 ))

이렇게 코드를 짜고 source 파일명.sh 100 200 을 실행시키면 더한 값 300이 출력된다.

 

쉘 명령어의 실행결과를 변수에 저장

DATE=$(date)

echo Today : $DATE

DATE 변수에 date 실행결과를 저장한다.

실행하면 date 명령어가 실행된 결과값이 출력된다.

 

주석

#주석은 #으로

그런데 최상단의 bash 실행기 지정은 주석이 아니라는 점!!

 

if문

= : == (문자열 비교)

if [ $1 = "hi" ]; then
	echo hello
elif [ $1 = "hello"]; then
	echo world
else echo hehe

띄어쓰기 주의해야한다...

[$1 = "hi"] 이렇게 쓴다면 if 문에 에러가 발생한다.
[ $1="hi" ] 이렇게 쓰면 비교문이 아니라, 변수에 hi가 입력하는 코드가 된다.

꼭 반드시 띄어쓰기 조심하기!!

숫자 비교

-lt : < (less than)
-gt : > (greater than)
-eq : = (equal to)
-ne : != (not equal)
-le : <= (less & equal)
-ge : >= (greater & equal)

|| : or
&& : and

read n

if [ $n -gt 0 ] && [ $n -lt 10 ] ;then
    echo small
elif [ $n -gt 10 ] && [ $n -lt 20 ] ;then
    echo middle
else echo big
fi

0 ~ 10 사이 수 입력 시 small,
10 ~ 20 사이 수 입력시 middle,
그 외의 수는 big 출력

 

for문, 함수, 배열

이 아이들은 쉘 스크립트에서 잘 쓰이지 않는다.
(실제 현업자도 얘네들은 한번도 본적 없다고 함)

그래서 자주 쓰이는 아이들만 정리하고 마치겠다!

728x90
반응형