Bash에서 작은따옴표와 큰따옴표의 차이점

2563 단어 beginnersbash
대부분의 경우 거의 동일하게 작동하지만 작은따옴표('')와 큰따옴표("")는 Bash에서 근본적으로 다릅니다.

그들은 얼마나 다른가요?



하나의 위치 인수를 받아 터미널에 메시지를 출력하는 스크립트 hello-world.sh가 있다고 가정합니다.

#!/bin/bash
echo "Hello, $1" # using double quotes


실행하다

hello-world.sh Tiberius


산출

# => Hello, Tiberius


그러면 실행되고 예상되는 출력이 제공됩니다. 엄청난!

이제 동일한 스크립트에 작은따옴표를 대신 사용할 때 어떤 일이 발생하는지 살펴보겠습니다.

#!/bin/bash
echo 'Hello, $1' #using single quotes


실행하다

hello-world.sh Tiberius


산출

# => Hello, $1


음, 위의 두 번째 출력에서 ​​결과가 우리가 기대한 것과 다르다는 것을 알 수 있습니다.

무슨 일이에요?



큰따옴표를 사용할 때 bash는 큰따옴표로 묶인 모든 문자를 보호합니다. 즉, bash는 특별한 처리나 의미를 부여하지 않고 모두 읽을 것입니다. 그러나 $를 만나면 $를 확장하고 그것이 전달하는 의미로 대체합니다. 이 예에서 이것은 스크립트를 실행할 때 bash에 전달된 이름으로 평가됩니다.

반면 작은따옴표는 $ 를 포함하여 포함된 모든 항목을 보호합니다. 따라서 스크립트를 실행할 때 bash는 $를 확장하여 의미를 부여하지 않습니다. 오히려 단순히 리터럴 형식으로 출력합니다. 이것이 두 번째 스크립트에 대한 인수가 전달된 값으로 평가되지 않은 이유입니다.

$ 기호를 사용하려면 어떻게 해야 합니까?


$ 심볼을 사용하고 싶다면 bash에게 적절할 때 이 심볼을 이스케이프하도록 지시해야 합니다.

다음은 예입니다.

#!/bin/bash
echo "Hello, $1! Today you earned \$2." #using $ as a symbol


실행하다

hello-world.sh Tiberius


산출

# => Hello, Tiberius! Today you earned $2.


주요 테이크 아웃


  • bash에서 작은따옴표와 큰따옴표는 거의 동일하게 작동하지만 경우에 따라 다르게 작동합니다.
  • 문자열의 변수 값을 평가하려면 큰따옴표를 사용하십시오.
  • 큰따옴표를 사용하면 bash가 변수 이름을 확장하고 실제 값으로 바꿀 수 있습니다.
  • 작은따옴표를 사용하면 bash가 문자열의 변수 값을 평가할 수 없습니다. 대신 변수 이름을 인쇄합니다.
  • 좋은 웹페이지 즐겨찾기