반응형


bash, 쉘스크립트에서 숫자 연산하기(string to int)

기본적으로 쉘 스크립트는 모든 값을 문자열로 처리한다.

또한 데이터타입을 미리 정의하고 사용하는 방식이 아니기 때문에,

10이라는 값이 저장된 변수 a에 단순히 $a+10을 하게 될경우, "10+10"이 출력되는 경우가 종종 발생한다.

 

이를 해결하기 위한 방법을 알아본다.

 

expr을 사용하는 방식


expr을 앞에 붙여주면 자동적으로 수를 기반으로 한 사칙연산으로써 값이 표현된다.

다음 예시를 보자.

 

a=10
echo $a+10

# 실행 결과 : 10+10

 

echo 뒤에 `expr을 활용할 경우, 정상적으로 20이 출력된다.

a=10
echo `expr $a + 10`

# 실행결과 : 20

 

이 때, 반드시 유의해야할점은 + 연산을 반드시 띄어쓰기와 함께 사용해야 한다는 것이다.

필자는 이 사소한 차이로 인해, 왜 안되는걸까를 한참을 고민해야했다.

 

a=10
echo `expr $a+10`

# 실행결과 : 10+10

a=10
echo `expr $a + 10`

# 실행결과 : 20

 

예시 ) 하위 디렉터리별로 파일 세고 총 합 구하기.


이전 포스팅에서 다뤘던, 쉘 스크립트에 약간의 연산을 추가하여 하위 디렉터리에 총 몇개의 파일이 있는지 계산해보는 쉘 스크립트를 예시로 작성해보았다.

 

sum=0
for x in `find . -maxdepth 1 -mindepth 1 -type d -print`
do
num = `find $x -type f|wc -l`
echo $x, num;
done
echo $sum
반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,