쉘 스크립트에서 변수는 데이터를 저장하고 재사용하는 데 사용된다. 기본 변수, 리스트 변수, 사전에 정의된 변수는 각각 다른 용도로 활용되며, 이를 이해하면 스크립트를 보다 유연하고 강력하게 작성할 수 있다.
기본 변수는 문자열, 숫자, 경로와 같은 단일 값을 저장하는 데 사용된다.
= 기호를 사용한다.#!/bin/bash
name="Alice" # 문자열 변수
age=30 # 숫자 변수
path="/usr/local/bin" # 경로 변수
변수 값을 참조할 때는 $ 기호를 붙인다.
echo "이름: $name"
echo "나이: $age"
echo "경로: $path"
expr 또는 $((...))를 사용해야 한다.num1=10
num2=20
sum=$((num1 + num2))
echo "합계: $sum"
export 명령어로 선언하며, 자식 프로세스에도 전달된다. export MY_VAR="Hello"
리스트 변수는 여러 값을 저장하는 데 사용된다. 쉘 스크립트에서 배열을 사용하려면 bash와 같은 쉘이 필요하다.
array=(값1 값2 값3)
fruits=("Apple" "Banana" "Cherry")
array[0]="Apple"
array[1]="Banana"
echo ${array[0]} # Apple
echo ${array[@]} # Apple Banana Cherry
echo ${#array[@]} # 3
쉘에는 시스템에서 미리 정의된 특수 변수와 환경 변수가 있다. 이는 쉘 스크립트 실행 환경과 관련된 정보를 제공한다.
특수 변수는 쉘 스크립트의 실행 상태와 관련된 정보를 제공한다.
| 변수 | 의미 |
|---|---|
$0 | 스크립트 이름 |
$1, $2, ... | 스크립트에 전달된 인수 |
$# | 전달된 인수의 개수 |
$@ | 전달된 모든 인수 |
$? | 마지막 명령어의 종료 상태 (0: 성공) |
$$ | 현재 쉘 프로세스 ID |
$! | 마지막으로 실행된 백그라운드 프로세스 ID |
환경 변수는 시스템 및 쉘 환경 설정과 관련된 정보를 제공한다. 일반적으로 대문자로 작성된다.
HOME: 사용자의 홈 디렉토리 경로PATH: 실행 가능한 파일이 위치한 디렉토리 경로 목록USER: 현재 사용자의 이름PWD: 현재 작업 디렉토리SHELL: 사용 중인 쉘의 경로@ 또는 인덱스를 사용하여 값을 참조한다.