let 명령어와 비슷하게 ((...)) 도 산술 확장과 계산을 할 수 있습니다. a=$((5 + 3)) 같은 간단한 형태의 식은 "a" 를 "5 + 3"인 8로 만들어 줍니다. 어쨌든 이 이중소괄호는 C 형태의 변수 조작을 가능하게 해주는 메카니즘입니다.
예 9-22. C 형태의 변수 조작
#!/bin/bash # ((...)) 를 써서 C 형태로 변수 조작하기. echo (( a = 23 )) # "=" 양쪽에 빈 칸을 두어 변수 세팅하기, C 형태. echo "a (initial value) = $a" (( a++ )) # 'a'를 후위증가, C 형태. echo "a (after a++) = $a" (( a-- )) # 'a'를 후위감소, C 형태. echo "a (after a--) = $a" (( ++a )) # 'a'를 전위증가, C 형태. echo "a (after ++a) = $a" (( --a )) # 'a'를 전위감소, C 형태. echo "a (after --a) = $a" echo (( t = a<45?7:11 )) # C 형태의 3중 연산자. echo "If a < 45, then t = 7, else t = 11." echo "t = $t " # 되네요! echo # ----------------------------- # 이스터 에그(Easter Egg) 경고! # ----------------------------- # Bash에는 ksh에서 많은 부분을 따온 C 형태의 연산자가 #+ 문서화되지 않은 형태로 많이 존재합니다. # Bash 문서에서는 ((...)) 를 쉘 연산이라고 합니다만, #+ 그 이상의 것이 존재합니다. # 비밀을 밝혀서 미안해요, Chet. # ((...)) 를 쓴 "for", "while" 루프도 참고하세요. # 이 이스터 에그들은 Bash 버전 2.04 이후에서만 동작합니다. exit 0 |
예 10-11 참고.