변수를 인용하는 큰따옴표의 의미가 혼란스럽습니다. 예를 들어 다음 두 스크립트는 동일한 출력을 제공합니다. 큰따옴표는 실제로 무엇을 의미합니까?
스크립트 1
getent passwd | while IFS=: read a b c d e f ; do
echo login "$a" is "$d"
done
스크립트 2
#! /bin/sh
getent passwd | while IFS=: read a b c d e f ; do
echo login $a is $d
done
답변1
보세요고급 Bash 스크립팅 가이드, 특히 일부5.1 참조변수 다루기. 변수를 큰따옴표로 묶는 이유는 변수 내용에 공백이 포함될 수 있기 때문입니다. 공백은 일반적으로 경계 문자이며 대부분의 명령에서 텍스트 문자열의 원자 구분을 나타냅니다.
이를 보여주는 좋은 예가 있습니다.
위 링크에서 발췌
variable2="" # Empty.
COMMAND $variable2 $variable2 $variable2
# Executes COMMAND with no arguments.
COMMAND "$variable2" "$variable2" "$variable2"
# Executes COMMAND with 3 empty arguments.
COMMAND "$variable2 $variable2 $variable2"
# Executes COMMAND with 1 argument (2 spaces).
# Thanks, Stéphane Chazelas.
위에서는 변수가 참조되는 방식에 따라 매개변수가 없거나 3 또는 1이 될 수 있음을 알 수 있습니다.
노트:ABS 가이드에 피드백을 제공하여 자신이 속한 사이트로 돌아갈 수 있도록 해주신 @StéphaneChazelas에게 감사드립니다.