셸 스크립트
From IT Wiki
Shell Script
셸 명령어를 기초로 만드는 간단한 스크립트 프로그램
- 쉘 스크립트라고 부르는 경우가 많은데 shell의 올바른 표기법은 '셸'이므로 '셸 스크립트'가 맞는 말이다.
- 이론적으로 모든 셸로 셸 스크립트를 만들 수 있지만 가장 많이하는 bash를 기준으로 설명한다.
최상단 필수 구문
셸 스크립트 최상단엔 아래와 같은 셸 지정 구문이 들어가있어야 한다. 다른 셸을 사용하는 경우 다른 셸을 명시할 수도 있다.
#!/bin/bash
- #! 구분은 실무적으로 shebang(시뱅 또는 쉬뱅)이라고 부른다. #의 hash, !의 bang(영미권 표현)을 합친 말이다.
기본 문법
주석
주석은 # 을 사용한다. #!와 같이 #뒤에 붙여서 사용하는 명령들이 있으므로 띄어쓴다.
#!/bin/sh
# 여기 있는 내용은 실행되지 않는다.
# echo "Hi, World!"
echo "Hello, World!"
출력
출력은 echo, printf 를 사용할 수 있다. printf는 C언어의 printf와 같이 포맷팅을 지원하는 출력이다.
#!/bin/bash
echo "hello, world"
printf "hello, world"
printf "%s, %s" hello, world
입력
read 명령을 통해 입력을 받을 수 있다.
#!/bin/sh
read NAME
echo "Hello, $NAME!"
실행결과
$ ./test.sh
ITWiki
Hello, ITWiki!
변수
- 변수의 이름은 영문자, 숫자, 언더바만 사용 가능하다.
- 변수에 값을 전달할 때는 = 의 앞뒤 공백 없이 작성한다. 문자열인 경우 "(쌍따옴표)로 감싼다.
- VAR = aaa (X)
- VAR="aaa" (O)
- 변수에 액세스할 때 변수명의 앞에 $를 넣는다. 중괄호로 감싸서 사용하는 표현도 흔히 사용된다.
- $VAR, ${VAR} 모두 사용 가능
- 변수의 값이 덮어 쓰기되는 것을 방지하기 위해서는 readonly를 사용한다.
#!/bin/bash
h="hello"
w="world"
echo "${h}, ${w}"
미리 정의된 특수변수들이 있어서 바로 사용 가능하다.
특수 변수
변수 | 기능 |
---|---|
$0 | 스크립트명 |
$1 ~ $9 | 인수, 첫 번째의 인수는 $1, 2번째 인수는 $2로 액세스 |
$# | 스크립트에 전달된 인수의 수 |
$* | 모든 인수를 모아 하나로 처리 |
$@ | 모든 인수를 각각 처리 |
$? | 직전에 실행한 커맨드의 종료 값(0은 성공, 1은 실패) |
$$ | 이 쉘 스크립트의 프로세스 ID |
$! | 마지막으로 실행한 백그라운드 프로세스 ID |
기존 명령어 사용
셸 스크립트에선 셸에서 사용하는 모든 명령어(ls, chmod, rm, mkdir 등등)를 다 사용할 수 있다.
결과가 반환되는 명령어의 결과를 활용하고 싶을 경우 변수에 할당하여 사용할 수 있다.
- 변수에 할당하는 방법으론
$()
를 이용하는 방법과 `로 명령어를 감싸주는 방법 두가지가 있다.
$ A=$(date)
$ echo $A
Tue Oct 25 23:12:15 UTC 2022
$ B=`date`
$ echo $B
Tue Oct 25 23:12:16 UTC 2022