[Linux] BashScript

정재훈·2022년 3월 28일
0

Linux

목록 보기
9/19

대표적인 CLI Shell

  1. dash(데쉬)
    특징 : 경량이다, 임베디드 리눅스에 보통 사용됩니다.
  2. bash(배쉬)
    특징 : 중량이다, 기능이 많다, PC 리눅스에 사용됩니다. 임베디드에 사용하기 위해서는 따로 설치해줘야한다.

CLI Shell은 자동화 스크립트를 만드는데 유용합니다.
파이썬 스크립트를 사용하여 할 수 있지만, python 실행기를 따로 설치해줘야하기 때문에 bash를 사용한다.

쉘스크립트 만들기

bash shell script의 확장자 .sh이다. bash script를 dash shell에서 실행하지 못한다!
bash 쉘 : #!/bin/bash
dash 쉘 : #!/bin/sh
#!쉬뱅이라고 부른다.

쉘스크립트에서는 쉬뱅을 입력하고 명령어를 입력하면 바로 사용가능합니다.

.sh스크립트를 생성하였다면 source [스크립트명].sh를 통해 실행가능합니다.

Bash 문법

입/출력

read [변수명] : 변수명에 입력받기
echo : 출력하기

변수

[변수명]=[값]을 통해 변수 선언가능하다.
$[변수명]을 이용해 재사용 가능합니다.

변수 선언할때에는 띄어쓰기를 하면 오류가 납니다.
모든 값들은 문자열로 취급합니다.

bts1=100 과 bts1="100"은 동일한 선언문입니다.

Argument 변수

go.sh

#!/bin/sh

echo $1
echo $2

source go.sh 123 abc
출력
123
abc

source 뒤에 넣어준 변수 2개가 Argument 변수라 부릅니다.

산술 연산

$(( ))를 통해 산술 연산 가능합니다.

#!/bin/bash

bts=123
abc=$(($bts+123))
echo $abc

결과
246

실행결과를 변수에 저장

변수에 명령어 실행결과를 저장할 수 있습니다.
변수=$(쉘 명령어)

IF문

띄어쓰기 꼭 지켜줘야합니다

#!/bin/bash

a=BTS

if [ $a = "BTS" ] ;then
		echo "BTS GOGO"
else
		echo "NO!!"
fi

조건문 중 수 비교 문법

-lt : less then으로 <을 뜻함
-eq : equal으로 =을 뜻함
-gt : greater then으로 >을 뜻함
-ne : not equal으로 !=을 뜻함
-ge : greater equal으로 <=을 뜻함
-le : less equal으로 >=을 뜻함

And / OR

|| : OR
&& : And
명령어1 && 명령어2 : 명령어1을 실행하고 명령어2를 실행한다.

참고) 자주쓰이지 않는 문법

Printf

printf "출력문자열 \n" or printf "출력문자열 %변수자료형 \n" 변수
echo와 달리 \n이라는 개행문자를 넣어줘야합니다.

배열

() : 배열 만들 때 사용한다. , {} : 배열값을 출력할 때 사용한다.

#!/bin/bash

// ,없이 구현한다.
arr=(1 2 3 4)

// arr[0]을 하나의 변수라 생각하면 편하다.
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
echo ${arr[3]}

for문

// dash에서만 사용 가능
#!/bin/bash

for((i=0; i<10; i++))
do
	echo "HI"
done

--------------
// bash & dash 둘다 사용 가능
for((i=0; i<10; i++));do
	echo "HI"
done

함수 만들기

#!/bin/bash

abc()
{
	printf "HIHI\n"
}

printf "START\n";
abc
abc

환경변수

환경변수 : 어는 위치에 있는지 상관없이 사용 가능한 변수
쉘에서의 환경변수 : 쉘에 저장되는 변수로 사용자, Process, 리눅스 자체 등 다 같이 사용가능한 변수이다.

printenv : 환경변수 전체 읽기
echo $변수명 : 환경변수 특정 변수만 읽기

export[변수] = [값] : 환경변수에 값 저장하기
but) 저장된 환경변수는 터미널 껐다 킬시 삭제된다.
따라서) ~/.bashrc의 맨 아랫줄에 export로 변수를 추가시키면 유지된다.
~/.bashrc란 처음 부팅할 때 초기 셋팅해주는 파일이기 때문에, export로 추가해주었다면 재부팅해줘야 해당 변수를 인식할 수 있다.

재접속 vs 재부팅

재접속 : 로그인/로그아웃으로 계정에 다시 접근하는 것
재부팅 : 서버 자체를 껐다 켜는 것

자동 스크립트 만들기

crontab : 원하는 시간 / 조건에 특정 명령어를 수행 시키기 위해 만들어야 하는 파일

.sh를 가지는 스크립트 파일 생성 후 해당 파일의 실행 권한을 chmod +x ~/[스크립트명]와 같이 부여해줍니다.

참고) date '+%H:%M:%S' : 현재 시간 출력 명령어

sudo vi /etc/crontab 에서

에 맞게 작성해줍니다.

sudo service cron status : 정상 동작 확인
sudo service cron restart : 재시작 명령어

profile
여러 방향으로 접근하는 개발자

0개의 댓글