Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

리눅스 Bash/Shell 스크립트 변수 선언 및 활용 방법 [완벽 가이드]

이 글에서는 리눅스의 Bash와 Shell 스크립트에서 변수를 선언하고 사용하는 방법을 소개합니다.

Bash(또는 리눅스 셸) 스크립트는 반복적인 작업을 자동화하고 시간을 절약할 수 있도록 명령어들을 모아놓은 파일입니다.

변수(Variables)는 스크립트 내에서 나중에 사용할 값을 저장해 두는 요소로, 숫자, 파일 이름 등 어떤 값이든 담을 수 있습니다.

아래에서는 리눅스 셸 스크립트에서 변수를 정의하고 사용하는 방법을 단계별로 살펴봅니다. 다음 예제들은 가장 널리 쓰이는 리눅스 셸인 BashZsh에서 모두 동작합니다.

Bash 변수 선언하기

Bash의 변수는 기본적으로 타입이 없습니다(Untyped). 변수에 어떤 작업이 가능한지 직접 지정할 수 없으며, 사용되는 맥락에 따라 자동으로 판단됩니다.

본질적으로 모든 변수는 문자열로 저장되며, 사용 시점에 문맥에 맞게 처리됩니다. 예를 들어 문자열에 숫자가 담겨 있다면, 증가 연산을 시도할 때 숫자로 취급됩니다.

아래 코드에서는 MY_STRING, MY_FILE_PATH, MY_NUMBER 세 개의 변수를 선언했습니다. 이 변수들은 모두 타입이 지정되지 않은(untyped) 변수입니다.

#!/bin/bash

MY_STRING="Hello Linux!"
MY_FILE_PATH=/path/to/my/file.txt
MY_NUMBER=4

코드 첫 줄의 #(셔뱅, shebang)에 대한 자세한 설명은 관련 가이드를 참고하세요.

'declare' 명령어 문법

declareBash 환경 전용 명령어이므로, 다른 셸을 사용하는 경우에는 제공되지 않을 수 있습니다.

declare의 기본 문법은 다음과 같습니다:

declare OPTIONS variable_name=variable_value

각 구성 요소는 다음과 같습니다:

  • OPTIONS: 선택 사항이며, 아래 표에서 변수의 타입이나 동작 방식을 지정하는 옵션을 선택할 수 있습니다.
  • variable_name: 정의(선언)하려는 변수의 이름입니다.
  • variable_value: 해당 변수에 할당할 값입니다.
declare 옵션 의미 설명
-r readonly 읽기 전용 변수로 선언
-i integer 정수형 변수로 선언
-a array 배열 형태의 변수로 선언
-f function(s) 함수 형태의 변수로 선언
-x export 스크립트 외부로 내보낼 수 있는 변수로 선언

'declare' 명령어 예제

다음은 문자열 변수를 선언하는 예제(OPTIONS 미사용)와 이어서 정수형 변수를 선언하는 예제입니다.

#!/bin/bash

declare MY_STRING="Hello Linux!"
declare -i MY_NUMBER=4

이후 MY_STRING의 값을 MY_NUMBER에 할당하려고 하면, 문자열이 숫자로 평가되지 않기 때문에 MY_NUMBER는 0으로 설정됩니다.

declare는 기본적인 타입 지정 기능만 제공하므로 이에 크게 의존하기보다는, 변수가 특정 타입의 값만 담도록 강제할 때 유용하게 활용하는 것이 좋습니다.

Bash 변수 사용하기

변수를 사용할 때는 변수 이름 앞에 $(달러 기호)를 붙입니다. 예를 들면 다음과 같습니다:

#!/bin/bash

MY_STRING="Hello Linux!"
MY_FILE_PATH=/path/to/my/file.txt
MY_NUMBER=4

echo $MY_STRING # 문자열 변수 출력
touch $MY_FILE_PATH # 지정된 경로에 파일 생성 또는 갱신
MY_NUMBER=$(($MY_NUMBER+1)) # 산술식을 평가하여 MY_NUMBER 1 증가

위 스크립트에서는 touch 명령어를 사용해 파일을 생성하거나 갱신했습니다.

또한 이중 괄호 (())의 사용에 주목하세요. 이는 Bash에게 괄호 안의 수식을 계산하도록 지시하는 역할을 합니다. 만약 이중 괄호가 없다면 MY_NUMBER에는 "$MY NUMBER+1"이라는 문자열 자체가 그대로 할당됩니다.

문자열 안에서 변수 사용하기

때로는 문자열 안에 변수의 값을 포함시켜야 할 때가 있습니다. 예를 들어 사용자 입력으로부터 받은 파일 경로를 메시지에 삽입하는 경우가 대표적입니다.

문자열에 변수를 포함시키려면, 따옴표로 감싼 문자열 안에 그대로 변수를 넣으면 됩니다:

echo "This is my string: $MY_STRING"

지역 변수(Local Variables)

지역 변수는 생성된 범위(scope) 내에서만 접근할 수 있습니다. 즉, 정의된 특정 함수나 루프 내부에서만 유효합니다.

#!/bin/bash

function myFunction {
        local MY_STRING="This string is only available here, in this function"
        echo $MY_STRING
}

echo $MY_STRING # 함수 내부에서 지역적으로 정의되었으므로 아무것도 출력되지 않음