셸 스크립트: 변수(variable)와 상수(constant)

셸 스크립트에서 변수란 단어가 가진 의미는 변할 수 있는( variable) 값이다. 또 상당수의 애플리케이션에서 변수가 이와 같은 의미로 사용되고 있다.
상수(constant)는 이름이 정의되고 값이 지정된다는 점은 변수와 같다. 하지만 그 값은 변하지 않는다는 점이 다르다.
쉘은 변수와 상수를 따로 구분하지 않는데 용어를 구분하는 이유는 쉘 이용자의 편의를 위해서이다.

1. 변수(variable)
앞서 말했듯이 변수가 가진 의미는 변할 수 있는 값이다.
1.1 변수할당문: 변수명과 변수값
변수할당문
variable=value
variable는 변수 이름(변수명), value는 문자열이 들어간다.
변수할당문에서 변수명, 등호(=), 변수값에는 빈칸이 없어야 하며, 변수명은 영문자, 언더바(_), 숫자만 들어가며 영문자 대소문자를 구분한다.
#!bin/bash
g=good
gm="good morning" # 빈칸은 따옴표, 쌍따옴표 안에서만 사용 가능하다.
echo $g, $gm
----- ----- ----- ----- ----- ----- or ----- ----- ----- ----- ----- -----
#!bin/bash
g=good gm="good morning" # 한 줄에 여러 변수도 설정할 수 있다.
echo $g, $gm
먼저 셔뱅 설정을 하고 good 문자열을 변수 g에 할당한다. good morning 문자열은 변수 gm으로 할당되었다. 그리고 쌍따옴표를 사용해서 빈칸도 같이 인식할 수 있게 설정했다.
저장했던 변수할당문(oo.sh)의 퍼미션을 700으로 맞춰 준 후에 실행시키면 아래와 같이 나옴을 알 수 있다. 쌍 따옴표가 빈칸도 인식하게 해 준 것을 알 수 있다.
]# ./oo.sh
good, good morning
1.2 명령어 결과: 변수 값 할당
명령어 결과를 변수 값으로 할당한 경우이다.
c=$(ls -l oo.txt)
2. 상수 선언
상수(constant)는 이름이 정의되고 값이 지정된다는 점은 변수와 같지만 값이 변하지 않는다는 점이 다르다고 언급했다.
보통 상수를 정의할 때는 대문자로, 그리고 변수를 정의할 때는 소문자를 사용한다.
readonly FILENAME="hello.txt"
declare -r filename="hello.txt"
readonly 명령어를 사용하여 상수를 사용할 수 있게 설정하고 대문자로 표시한 FILENAME이 상수이다. readonly 명령어 외에도 ‘declare -r’ 명령어를 사용할 수 있다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.