■ 변수 사용
Shell에 있어 변수의 사용은 매우 간단히 정의
변수명=값
▶ 주의 할 것은 '=' 사이의 좌우 공백이 없어야 함
▶ 대소문자 구별
▶ 변수의 이름으로써 영문자, 숫자 그리고 언더바(_)가 사용된다.
▶ 숫자형 변수와 문자형 변수의 구별이 없음
▶ 변수의 내용을 사용할 때는 변수명 앞에 '$'를 붙인다.
EX)
#!/bin/sh
# 변수에 값을 할당한다.
a="Embeddedkorea.com"
# 이제 a라는 변수에 등록된 값을 화면에 출력한다.
echo "a is : $a"
■. 숫자 계산을 위한 연산자
expr : 숫자 계산
+ : 더하기 Ex) echo `expr 10 + 20` => 30
- : 빼기 Ex) echo `expr 20 - 10` => 10
\* : 곱하기('\*'로 사용) Ex) echo `expr 11 \* 11` => 121
/: 나누기 Ex) echo `expr 10 / 2` => 5
%: 나누기를 한 수 나머지 값 Ex) echo `expr 10 % 4` => 2
= : 대입(지정) Ex) a=$b b의 값은 a에 저장된다
<주 의>
expr로 지정하는 경우 역작은따옴표( ` )를 사용 : 작은 따옴표( ' )가 아님 !
연산자 *와 괄호 앞에는 역슬래스(\)를 같이 사용
연산자와 숫자, 변수, 기호 사이에는 space가 존재
Ex)
#!/bin/sh
num1=10
num2=5
num3=`expr $num1 + $num2`
num4=`expr $num1 - $num2`
echo $num3 $num4
■ 변수의 값이 덮어 쓰기되는 것을 방지하기 위해서는 readonly를 사용한다.
- 변수를 unset으로 삭제할 수 있다 (그러나 readonly변수를 삭제하는 것을 불가능하다).
EX)
!/bin/sh
var="변수1"
VaR_2="변수2"
echo "Var_2=$VaR_2"
VaR_2="VaR_2가 변경됐다"
echo ${VaR_2}
readonly var
var="readonly var를 바꿔보자"
■ 특수 문자
* ? [ ' " ` \ $ ; & ( ) | ~ < > # % = 스페이트 탭 개행는 쉘 스크립트의 특수 문자이다.
문자열로써 사용할 때는 \를 앞에 쓴 다음에 쓴다.
■ 특별한 변수
▷ $0 : 스크립트명
▷ $1 ~ $9 : 인수, 첫 번째의 인수는 $1, 2번째 인수는 $2로 액세스
▷ $# : 스크립트에 전달된 인수의 수
▷ $* : 모든 인수를 모아 하나로 처리
▷ $@ : 모든 인수를 각각 처리
▷ $? : 직전에 실행한 커맨드의 종료 값(0은 성공, 1은 실패)
▷ $$ : 이 쉘 스크립트의 프로세스 ID
▷ $! : 마지막으로 실행한 백그라운드 프로세스 ID
■ 변수 값의 치환
▶ ${var} : 변수 값을 바꿔 넣는다.
▶ ${var:-word} : 변수가 아직 세팅되지 않거나 공백 문자열의 경우 word를 반환한다. var에는 저장되지 않는다.
▶ ${var:=word} : 변수가 아직 세팅되지 않거나 공백 문자열의 word를 반환한다. var에 저장된다.
▶ ${var:?word} : 변수가 아직 세팅되지 않거나 공백 문자열의 경우 치환에 실패하고, 스탠다드 에러에 에러가 표시된다.
▶ ${var:+word} : 변수가 세팅되지 않은 경우 word가 반환된다. var에는 저장되지 않는다.