[LINUX] 쉘 스크립트란?

Yuri Lee·2023년 3월 29일
0

LINUX

목록 보기
2/2

쉘 스크립트란?

쉘 스크립트란 간단히 UNIX 커맨드 등을 나열해서 실행하는 것.
언제 어떤 조건으로 어떠한 명령을 실행시킬 것인가, 파일을 컨텐츠를 읽어들일 것인가, 로그 파일을 작성한느 것 등을 할 수 있다.

기본설정

예시로 다음과 같이 test.sh 파일을 작성한다.

#!/bin/sh
echo "Hello, World!"

-쉘 스크립트 파일은 기본적으로 .sh 확장자로 작성한다.
-실제 코드를 작성하기 전에 맨 처음의 행에는 #!/bin/sh를 쓴다. 시스템에 지금부터 셸 스크립트를 쓴다는 사실을 알려주기 위함이다. 그러나 bash의 독자적인 기능을 사용하는 경우 다르게 작성한다.

-쉘 스크립트 파일(test.sh)를 실행하기 위해서는, 터미널에서 파일이 저장된 장소에 가서 아래의 커맨드 중 하나를 선택해서 실행해야한다.

$ chmod 755 test.sh
$ ./test.sh
$ sh test.sh
$ bash test.sh

코멘트

#!/bin/sh
# 여기는 코멘트이다.
#코멘트처리된 구문은 실행되지 않는다. 

echo "Hello, World!"

입력/출력

echo로 출력, read로 입력할 수 있다.

#!/bin/sh

read NAME
echo "Hello, $NAME!"

실행하면 결과는 아래와 같다.

$ ./test.sh
Tensai
Hello, Tensai!

입력을 대기하고 있는 경우, 스크립트는 실행되지 않는다.
Bash에서는 -e 플래그로 특수 텍스트를 이스케이프할 수 있다.

#!/bin/bash
echo -e "Hello\n$NAME!" #개행된다.

변수

-변수의 이름으로써 영무자, 숫자 그리고 언더바가 사용된다.
-변수에 값을 전달할 때는 = 의 앞, 뒤에 공백 없이 작성한다. 문자열인 경우 "(쌍따옴표)로 감싼다.
-변수에 액세스할 때 변수명의 앞에 $를 넣는다. 혹은 $를 넣어서 변수를 {}로 감싼다.
-하나의 변수에 한 개의 값만 보존된다.
-변수의 값이 덮어쓰기되는 것을 방지하기 위해서는 readonly를 사용한다.
-변수를 unset으로 삭제할 수 있다. (readonly 변수 삭제 불가능)

#!/bin/sh

var="변수1"
VaR_2="변수2"
echo "Var_2=$VaR_2"

VaR_2="VaR_2가 변경됐다"
echo ${VaR_2}

readonly var
var="readonly var를 바꿔보자"

실행결과는 다음과 같다.

$ ./test.sh
Var_2=변수2
VaR_2가 변경됐다.
shell.sh: line 11: var: readonly variable

특별한 변수

쉘 스크립트에서는 아래와 같은 특별한 변수가 있다.

  • $0 : 스크립트명
  • $1 ~ $9 : 인수
  • $# : 스크립트에 전달된 인수의 수
  • $* : 모든 인수를 모아 하나로 처리
  • $@ : 모든 인수를 각각 처리
  • $? : 직전에 실행한 커맨드의 종료 값(0은 성공, 1은 실패)
  • $$ : 이 쉘 스크립트의 프로세스 ID
  • $! : 마지막으로 실행한 백그라운드 프로세스 ID

변수값의 치환

  • ${var} : 변수 값을 바꿔 넣는다.
  • ${var:-word} : 변수가 아직 세팅되지 않거나 공백 문자열의 경우 word를 반환한다. var에는 저장되지 않는다.
  • ${var:=word} : 변수가 아직 세팅되지 않거나 공백 문자열의 word를 반환한다. var에 저장된다.
  • ${var:?word} : 변수가 아직 세팅되지 않거나 공백 문자열의 경우 치환에 실패하고, 스탠다드 에러에 에러가 표시된다.
  • ${var:+word} : 변수가 세팅되지 않는 경우 word가 반환된다. var에는 저장되지 않는다.

REFERENCES

https://engineer-mole.tistory.com/200

profile
개발자 이유리

0개의 댓글