본문 바로가기

개발

Bash 쉘 스크립트에서 따옴표(' ')와 쌍따옴표(" ")의 차이

선 3줄 요약

  1. 따옴표(' ')로 감싸진 문자열은 문자열 그대로 유지되어 출력된다. (Bash 변수 사용 불가능)
  2. 쌍따옴표(" ")로 감싸진 문자열 내에서는 Bash 에서 선언한 변수사용이 가능하다.
  3. 따옴표에서는 특수기호 이스케이핑을 해주지 않아도 문자 그자체로 출력이 가능하다.

배포 자동화 스크립트를 제작하던 과정에서 난관에 부딪혔다. 분명 쉘스크립트내에서 선언한 변수를 문자열에 삽입했는데 변수가 치환되지않고 바로 나오는게 아닌가 그래서 찾아보니, 따옴표만으로 감싸진 문자열은 그 자체가 문자열이 되서 출력이 된다. 그래서 위와같이 변수를 따옴표만으로 감싼 경우 오늘의 날짜가 아닌, $DATE가 출력되게 되는것이다.   따옴표와 쌍따옴표를 언제 사용해야 하는지 아래와 같이 정리해본다.  

따옴표(' ')를 사용해야 할때

  • 문자열 그 자체가 존중(?)되고 싶을때.
  • 특수문자가 많이 포함된 문자열의 경우, 백슬래시(\)를 사용해가며 일일이 Escaping을 해주기 귀찮을때

쌍따옴표(" ")를 사용해야 할때

  • 문자열 내에 Bash 변수를 삽입해 새로운 문자열을 동적으로 만들어 내야 할 때.
  • \n, \t, \a 와 같이 이스케이프 코드를 삽입해야 할 때.
  참고자료
  • Difference between single and double quotes in Bash (링크:Stack Overflow)
  • What’s the Difference Between Single and Double Quotes in the Bash Shell? (링크)