티스토리 뷰
최근에 부쩍 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
'Server' 카테고리의 다른 글
[Java] 정적 팩토리 메소드 개념과 잘 써보기 (0) | 2023.07.19 |
---|---|
[Docker] Mysql 설치 및 설정하기 (2) | 2023.07.19 |
[Shell Script] 2탄 - 조건문, 반복문과 연산자에 대해 알아보기 (0) | 2023.06.12 |
[Java] LinkedList 와 ArrayList 비교 (0) | 2023.06.06 |
Spring Boot Test 클래스 생성법 (0) | 2023.05.30 |
[AWS] Error message: Unable to execute HTTP request: Connect to email.ap-northeast-2.amazonaws.com 에러 해결 로그 (1) | 2023.05.24 |