쉘 스크립트(Shell Script) 기초(2) -명령어 치환, 산술 확장

Ubuntu 14.04 LTS 환경을 기준으로 작성되었습니다.

명령어 치환

$(명령어열) 또는 `명령어열`

쉘 스크립트에서는 명령어열 실행 결과(표준 출력)을 문자열로 치환할 수 있다.

#!/bin/bash

today=$(date +%Y-%m-%d)  
filename="file-${today}.txt"  
touch ${filename}  
echo "Hello World" > $filename  
echo "End" >> $filename  
echo "마지막 줄은 '$(tail -n 1 $filename)' 입니다."  

for 문에서도 아래와 같이 명령어 치환을 사용할 수 있다.

#!/bin/bash

for filename in $(cd ${HOME}/log; ls *.log | grep -v error.log)  
do  
  echo $filename
done  

산술 확장

$(( 계산식 ))

$ [ $(( 3 * (2 + 10) )) -gt $(( 5 * 7 )) ] # 36 > 35
$ echo $?
0  
$ test $(( (2 + 10) / 3 )) -le $(( 1 + 2 )) # 4 <= 3
$ echo $?
1  

* [ 또는 test : 판정 결과를 종료 상태 변수로 반환해주는 명령어

산술 확장을 이용한 수식의 계산 결과를 쉘 스크립트에서도 이용할 수 있다.

#!/bin/bash
# arithmetic.sh

sum=0  
first=1  
i=$first  
while [ $i -le 10 ]  
do  
  sum=$(($sum + $i))
  i=$(($i + 1))
done  
echo "${first}에서 ${i}까지의 합은 ${sum}입니다."  


$ sh arithmetic.sh
1에서 11까지의 합은 55입니다.  

출처