[번외] 명령어 치환

리눅스에서는 명령어의 실행 결과를 문자열처럼 삽입할 수 있는 기능이 있다. 이를 명령어 치환 (Command Substitution) 이라고 하며, 두 가지 방식이 있다.

요약

구문 설명 예시 결과 (출력 포함)
`command` 오래된 방식 (호환성 높음) echo "현재 시각은 `date`"
$(command) 권장되는 방식 (가독성 좋고 중첩 가능) echo "현재 시각은 $(date)"

백틱(``)

  • 형식:`command`
  • 설명: 명령어 command를 실행하고, 그 출력 결과가 해당 위치에 문자열로 삽입된다.
  • 예시:
echo "현재 시각은 `date`"

출력 예시:

현재 시각은 Sun Jul 16 15:35:00 UTC 2024

$( … ) 사용

  • 형식: $(command)
  • 설명: 위와 동일하게 명령어의 출력을 삽입하지만, 가독성 좋고 중첩 사용 가능해서 현대 스크립트에서 더 많이 사용된다.
  • 예시:
echo "현재 시각은 $(date)"

출력 예시:

현재 시각은 Sun Jul 16 15:35:00 UTC 2024

중첩 사용 예시

echo "현재 디렉토리에는 $(ls | wc -l)개의 항목이 있다."

출력 예시:

현재 디렉토리에는 5개의 항목이 있다.

정리

  • 가능한 한 $(command) 형태를 사용하는 것이 좋다.
  • 백틱(``)은 오래된 스크립트에서 자주 보이지만 중첩이 어려워 유지보수가 불편하다.
  • 스크립트에서 동적으로 정보를 넣을 때 매우 유용하다 (예: 날짜, 파일 목록, 계산 등).