셸 스크립트

From CS Wiki

Shell Script

셸 명령어를 기초로 만드는 간단한 스크립트 프로그램

  • 쉘 스크립트라고 부르는 경우가 많은데 shell의 올바른 표기법은 '셸'이므로 '셸 스크립트'가 맞는 말이다.
  • 이론적으로 모든 셸로 셸 스크립트를 만들 수 있지만 가장 많이하는 bash를 기준으로 설명한다.

최상단 필수 구문[edit | edit source]

셸 스크립트 최상단엔 아래와 같은 셸 지정 구문이 들어가있어야 한다. 다른 셸을 사용하는 경우 다른 셸을 명시할 수도 있다.

#!/bin/bash
  • #! 구분은 실무적으로 shebang(시뱅 또는 쉬뱅)이라고 부른다. #의 hash, !의 bang(영미권 표현)을 합친 말이다.

기본 문법[edit | edit source]

주석[edit | edit source]

주석은 # 을 사용한다. #!와 같이 #뒤에 붙여서 사용하는 명령들이 있으므로 띄어쓴다.

#!/bin/sh

# 여기 있는 내용은 실행되지 않는다.
# echo "Hi, World!"

echo "Hello, World!"

출력[edit | edit source]

출력은 echo, printf 를 사용할 수 있다. printf는 C언어의 printf와 같이 포맷팅을 지원하는 출력이다.

#!/bin/bash

echo "hello, world"
printf "hello, world"
printf "%s, %s" hello, world

입력[edit | edit source]

read 명령을 통해 입력을 받을 수 있다.

#!/bin/sh

read NAME
echo "Hello, $NAME!"

실행결과

$ ./test.sh

ITWiki

Hello, ITWiki!

변수[edit | edit source]

  • 변수의 이름은 영문자, 숫자, 언더바만 사용 가능하다.
  • 변수에 값을 전달할 때는 = 의 앞뒤 공백 없이 작성한다. 문자열인 경우 "(쌍따옴표)로 감싼다.
    • 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

기존 명령어 사용[edit | edit source]

셸 스크립트에선 셸에서 사용하는 모든 명령어(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

참고 문헌[edit | edit source]