C.W.K.
Stream
Lesson 07 of 12 · published

Command substitution 과 산술

~10 min · substitution, arithmetic

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

$( ) — 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 으로 갈아탈 시점.

Code

캡처와 계산·bash
#!/usr/bin/env bash
set -euo pipefail
lines=$(wc -l < ~/.zshrc)
doubled=$((lines * 2))
echo "$lines lines, doubled = $doubled"
now="$(date +%H:%M:%S)"
echo "snapshot at $now"

External links

Exercise

count.sh 한 줄: ts=$(find . -name '*.ts' | wc -l); echo "$ts*2 = $((ts*2))" — TS 파일 수와 두 배 출력.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.