내용
-
변수는 스크립트의 동작을 위해 필요한 데이터를 저장하거나 읽어오거나 조작할 수 있는 메모리상 저장 공간입니다.
-
사용하는 형식은 VAR=value이며 공백을 허용하지 않는다.
-
보통은 변수 이름은 대문자로 표기한다.
-
var.sh
#!/bin/bash
MSG="Hello World"
echo $MSG
-
현재 shell의 모든 변수와 환경 변수를 확인하고자 할 때는 (명령어) set를 사용하고 오직 export된 변수만을 출력하고자 할 때는 (명령어) env를 사용한다.
-
변수를 선언하면 선언한 Shell (셸)에서만 유효하다. Shell (셸)을 벗어나면 해당 변수에 접근할 수 없더. 이를 Local Variable (지역 변수)라고 한다.
- 지역변수를 선언할 때 VAR=value 형식도 가능하지만 (명령어) export를 사용할 수도 있다. 선언한 변수를 해제할 때는 (명령어) unset를 사용한다.
-
Shell (셸)에 관계없이 접근 가능한 변수를 선언하고자 할 때는 사용자 환경변수나 시스템 환경변수를 선언해서 사용해야 한다.
- Linux의 경우, 사용자 환경변수는 (파일) ~⫽.bashrc에서 선언해서 사용한다.
- 시스템 환경변수는 (파일) ⫽etc⫽bash.bashrc에 선언해서 사용한다.
-
변수에 값을 할당할 때 다양한 방법이 존재한다.
#!/bin/sh
# 변수값 초기화
name="Kim Shin Keon"
# 변수값 출력
echo "\${name} = ${name}"
# 스트링의 길이를 출력한다.
echo "lenth=${#name}"
# ${name:offset}
# 변수의 특정 오프셋 이후 반환
echo "offset=${name:5}"
# ${name:offset:length}
# 변수의 특정 오프셋 이후 특정 길이만큼 반환
echo "offset=${name:5:4}"
# ${name:+value}
# name 변수 값이 null 아니면 value를 반환하지만 변수에 할당하지는 않는다.
echo "\${name}=${name:+Hello}"
echo "\${name}=${name}"
# ${name:-value}
# name 변수 값이 null이면 value를 반환한다. 그렇지 않으면 원래 값을 반환한다.
echo "\${name}=${name:-123456}"
echo "\${name}=${name2:-123456}"
# ${name:?value}
# name 변수 값이 null이 아니면 name을 출력하고, null이면 value 출력 후 오류를 발생시킨다.
echo "name3=${name3:?ERROR!!!}"
- 변수 NAME에 francis 를 설정하고 아래의 my-name-is.sh 를 실행하는 방식을 다르게 해보자.
my-name-is.sh
#!/bin/bash
echo My Name is $NAME.
$NAME=francis
bash my-name-is.sh
My Name is.
$ . my-name-is.sh
My Name is francis.