$( ) — command 출력 캡처
now="$(date +%Y-%m-%d)"
files="$(find . -name '*.py' | wc -l)"
echo "$files Python files as of $now"$(...) 가 command 실행 + stdout 캡처 + 값 치환 (끝 줄바꿈은 trim). 결과는 항상 인용: "$(cmd)" — 인용 없으면 값이 word-split.
Backtick (옛 스타일)
옛 스크립트에서 `cmd` 를 봐. 효과 같지만 중첩 어렵고 단일 따옴표와 헷갈리기 쉬움. 새 코드는 $( ). 스타일 가이드 들이 backtick deprecated.
(( )) — 산술
i=0
((i++))
((sum = a + b * 2))
((i < 10)) && echo 'still small'(( )) 안에선 변수에 $ 안 붙임. 연산자: + - * / % ** + C 스타일 ++ -- && ||. 결과 0 이 아니면 exit 0, 0 이면 exit 1 — 일반 C 와 반대지만 shell truthiness 와 일치.
$(( )) — 산술 substitution
echo "$((1 + 2))" # 3
echo "file_$((i + 1)).txt"값 계산 후 치환. 파일명 생성 / 카운터에 흔함.
Bash 5 는 부동소수 없음
Shell 산술은 정수만. 부동소수는 bc -l 파이프 또는 awk 'BEGIN{print 3.14*2}'. 대부분 스크립트는 부동소수 불필요. 필요하면 보통 Python 으로 갈아탈 시점.