[Shell Script] 1탄 - 기본 설정과 명령어에 대해 알아보기
최근에 부쩍 DevOps와 관련된 컨텐츠를 작성하면서 자연스럽게 Linux 공부를 진행하던 와중, Shell Script라고 하는 Command Line Interface의 파일 관리를 집중적으로 하게 되었습니다. 그렇다보니 Shell Script에 대해 몰랐던 부분을 더 알게 되었고, 이를 활용하고자 하는 방법에 대해서 글을 작성해보려 합니다.
1. 기본 설정
스크립트 파일은 기본적으로 아래의 형식으로 시작합니다.
#!/bin/sh
위 한줄의 내용이 의미하는 것은 시스템에 지금부터 셸 스크립트를 쓴다는 것을 선언하는 것입니다. 마치 C언어세어 #include 하는 것과 같은 맥락인거죠.
2. 스크립트 파일 실행하기
스크립트 파일을 hello.sh로 만들었다면 사용법은 아래처럼 쓸 수 있습니다.
/bin/sh hello.sh ## /bin/sh에 담긴 것으로 실행
./hello.sh ## 즉시 실행
sh test.sh ## sh 가 전역 명령어로 설치된 경우
bash test.sh ## bash 가 전역 명령어로 설치된 경우
3. 문법
이번에는 기본 문법에 대해 알아보려 합니다.
a. echo
echo 명령어는 print(); 와 같은 커맨드입니다.
echo "Hello, ABBO" // Hello, ABBO 출쳑
b. #
해시기호는 코멘트 처리하는 부분입니다.
# Comment line
# 사용하는데 지장없음
c. 그 외 커맨드
그리고 다른 내용은 실제로 터미널에서 사용하는 명령어들을 조합할 수 있습니다. 예를 들어 docker 명령어를 사용한다면 그냥 도커 실행 명령어를 사용해주면 됩니다.
docker image prune -f -a # docker image 중 사용하지 않는 이미지를 삭제하는 명령어
systemctl start nginx ## nginx 를 systemctl 명령어로 시작
sudo systemctl stop nginx ## nginx 를 sudo 권한으로 systemctl 명령어로 중지
sudo service nginx reload ## nginx 를 sudo 권한으로 service 명령어로 재기동
4. 변수
변수를 선언하는 특징은 아래와 같습니다.
a. let, const, var, String, int 같은 변수 타입이 필요없습니다. 호출은 $변수명 또는 ${변수명}으로 호출할 수 있습니다.
var="variable"
NAME="abbo"
echo "$var" // variable
echo "${NAME}" // abbo
b. 띄어쓰기를 허용하지 않습니다. 변수에 값을 입력하는 것도 '='를 붙여서 사용합니다.
var = "variable" (X)
var="variable" (O)
c. string interpolation이 가능합니다.
NAME="abbo"
echo "My name is $NAME" // My name is abbo
d. string type의 경우 쌍따옴표(")로 감싸줍니다.
e. readonly로 final 선언이 가능합니다. 변수의 값이 덮어써지는 것을 방지해줍니다.
var="var1"
echo $var // var1
var="var2"
echo $var // var2
readonly name="abbo"
echo $name // abbo
name="tistory" (X)
f. 배열 변수는 소괄호 () 로 사용합니다.
ARRAY=(item1 item2 item3)
ARRAY[0]="test"
ARRAY[2]=535
echo "ARRAY[0]: $ARRAY[0]" # ARRAY[0]: test
echo "ARRAY[1]: $ARRAY[1]" # ARRAY[1]: item2
echo "ARRAY[2]: $ARRAY[2]" # ARRAY[2]: 535
5. 변수를 전역변수로 사용하기
타입스크립트, Node.js를 사용하시다보면 export라는 개념에 대해 익숙하실 겁니다. 셸 스크립트 파일 내에서 사용하는 변수를 전역변수로 지정하여 다른 파일에서도 사용 가능하도록 설정하는 키워드는 EXPORT 입니다.
## test1.sh
var_internal="internal"
EXPORT var_external="external"
./hello.sh
## hello.sh
echo "$var_external" // external
echo "$var_internal" // Error
이어서 프로그래밍에 꼭 필요한 조건이나 반복에 대한 내용은 다음 글에 작성을 해보았습니다. 관심 있으신 분들은 확인해보셔도 좋을 것 같아요 :)
[Shell Script] 2탄 - 조건문, 반복문과 연산자에 대해 알아보기
이번 글에서는 연산자, 조건 및 반복에 대해서 살펴보는 글을 적어보려 합니다. 1. 오퍼레이터 (연산자) 기본적으로 연산자를 표현하는 방법은 expr ${숫자} ${연산자} ${숫자} 로 표현하게 되고 ${연
abbo.tistory.com