리눅스 셸 스크립트: 변수 생성 및 사용하기

리눅스 셸 스크립트: 변수 생성 및 사용하기

이 글에서는 셸 스크립트에서 변수를 사용하는 방법에 대해 자세히 알아보겠습니다. 변수의 정의부터 시작하여, 셸 스크립트에서 변수를 생성하고 사용하는 방법, 특수 변수의 이해, 변수 확장 기법, 그리고 환경 변수와 셸 변수의 차이점에 대해 알아보냅니다.

1. 변수의 기본 개념

변수는 데이터를 저장하는 데 사용되는 이름이 지정된 저장공간입니다. 셸 스크립트에서 변수는 명령어의 재사용, 설정의 관리, 그리고 스크립트의 유연성을 높이는 데 중요한 역할을 합니다.

2. 변수 생성 및 할당

셸 스크립트에서 변수를 생성하고 할당하는 방법은 다음과 같은 규칙을 따릅니다. 변수명은 문자, 숫자, 밑줄(_)을 포함할 수 있으나, 숫자로 시작할 수는 없습니다.

  • MY_VAR=Hello: 변수에 문자열을 할당할 때 인용 부호를 생략할 수 있습니다. 공백이나 특수 문자가 없는 경우에 해당합니다.
  • MY_VAR='Hello, World': 단일 인용 부호를 사용하여 공백이 포함된 문자열 값을 할당합니다.
  • MY_VAR="Hello, World": 이중 인용 부호를 사용하여 공백이 포함된 문자열 값을 할당합니다. 이중 인용 부호는 변수 확장, 명령 대체, 산술 확장 등을 허용합니다.
  • MY_VAR=5+2: 숫자를 변수에 할당하면, 이는 문자열 ‘5+2’로 처리됩니다.
  • MY_VAR="$ANOTHER_VAR": 다른 변수의 값을 참조하여 할당할 수 있습니다.
  • MY_VAR = "Hello, World": 변수에 값을 할당할 때는 ‘=’ 앞뒤에 공백을 사용하지 않습니다.

산술 연산과 expr 사용법

셸 스크립트에서 expr 명령어를 사용하여 산술 연산을 수행하고 그 결과를 변수에 할당할 수 있습니다. 곱셈 연산자(*)와 괄호(())를 사용할 때는 역슬래시(\)를 앞에 붙여야 합니다.

  • num=$(expr 2 + 2): 2와 2를 더한 결과를 변수 num에 할당합니다.
  • num=$(expr 2 - 2): 2에서 2를 뺀 결과를 변수 num에 할당합니다.
  • num=$(expr 2 \* 2): 2와 2를 곱한 결과를 변수 num에 할당합니다.
  • num=$(expr \( 2 + 2 \) \* 3): 2와 2를 더한 후 3으로 곱한 결과를 변수 num에 할당합니다.

3. 변수 사용

변수를 사용하여 셸 스크립트에서 데이터를 저장하고 참조할 수 있습니다. $ 기호를 사용하여 변수의 값을 가져올 수 있습니다. 다음은 변수 사용의 예시입니다.

$ MY_NAME="Blue, Share"
$ age=$(expr 29 + 1)
$ echo $MY_NAME
Blue, Share
$ echo $age
30

이 예시에서 MY_NAME 변수에 문자열 “Blue, Share”를 할당하고, age 변수에는 expr 명령어를 사용하여 계산된 결과인 30을 할당합니다. echo 명령어를 사용하여 이들 변수의 값을 출력합니다.

리눅스 변수 생성 및 사용 예시

4. 특수 변수

셸 스크립트에는 여러 특수 변수들이 있습니다. 예를 들어, $0은 스크립트의 이름을, $1, $2 등은 스크립트에 전달된 인자들을 나타냅니다. $#은 인자의 수를, $?는 마지막으로 실행된 명령의 종료 상태를 반환합니다.

5. 변수 확장

변수 확장은 셸 스크립트에서 변수의 값을 변형하거나 조작할 때 사용합니다. 다음은 변수 확장의 몇 가지 예시입니다.

MY_NAME="Blue, Share"
$ echo ${MY_NAME,,}
blue, share
$ echo ${MY_NAME^^}
BLUE, SHARE
$ echo ${MY_NAME:6:5}
Share
$ echo ${#MY_NAME}
11

이 예시에서는 MY_NAME 변수를 다음과 같이 조작합니다:

  • ${MY_NAME,,}는 변수의 모든 대문자를 소문자로 변환합니다.
  • ${MY_NAME^^}는 모든 소문자를 대문자로 변환합니다.
  • ${MY_NAME:6:5}는 문자열의 6번째 위치에서 5글자를 추출합니다.
  • ${#MY_NAME}는 변수 MY_NAME의 길이를 계산합니다.
리눅스 변수 확장 예시

6. 환경 변수와 셸 변수의 차이

셸 스크립트에서는 환경 변수와 로컬(셸) 변수를 구분합니다. 환경 변수는 시스템 전체에 걸쳐 접근 가능한 반면, 로컬 변수는 스크립트나 세션 내에서만 접근 가능합니다.

관련 이전 게시글

위로 스크롤