달러 기호에 어떻게 반응합니까?

달러 기호에 어떻게 반응합니까?

$PATH예를 들어 ,$HOME

입력하면 echo $PATHmy 가 반환되지만 실제 변수가 나타내는 것이 아닌 $PATH단어를 에코하고 싶지만 작동하지 않습니다.$PATHecho "$PATH"

답변1

USD를 탈출하면 됩니다 $:

echo \$PATH
$PATH

또는 작은따옴표로 묶습니다.

echo '$PATH'
$PATH

이렇게 하면 쉘이 단어를 해석하지 않게 됩니다.

답변2

$대부분의 쉘 구문에서 매우 특수한 문자입니다. Bourne과 유사한 쉘을 살펴보면 소개에 사용됩니다.

  1. $#, $var, 등의 매개변수 확장${foo:-bar}
  2. 명령 대체는 다음과 같습니다 $(logname)( ${ logname;}일부 쉘에서는 서브쉘을 피하기 위해)
  3. $((1+1))( $[1+1]일부 쉘에서도) 와 같은 산술 확장 .
  4. $'\n'또는 와 같은 일부 셸의 다른 형식의 인용입니다 $"localized string".

마지막 경우를 제외하고 이러한 확장/교체는 여전히 큰따옴표 내에서 발생합니다( $"..."in bash또는 내에서도 ksh93).

특별대우를 받지 않으려면 $다음과 같은 방법으로 참고해야 합니다.

  • 작은따옴표: echo '$PATH'또는 echo '$'PATH. 대부분의 셸에서 모든 문자(자신 제외)를 이스케이프하기 때문에 일반적으로 사용하려는 문자입니다.
  • 검은색 슬래시: echo \$PATH. 또한 큰따옴표 안에:echo "\$PATH"
  • 일부 쉘에는 다른 참조 연산자가 있습니다: echo $'$PATH', echo $'\44PATH'(ASCII 호환 문자 세트 가정),echo $'\u0024'

또는 위에 나열된 유효한 확장 형식의 일부가 아닌지 확인하세요.

  • echo "$"PATH
  • echo $""PATH,echo $"PATH" .일부 쉘에서는 인용된 형식을 선호 ksh93하고 bash지원하므로 이러한 형식은 피해야 합니다 .$"..."
  • echo $``PATH. 가능하다는 것을 보여주는 것 외에는 그것을 사용하고 싶은 이유가 없습니다.
  • echo "${$+$}PATH"그리고 다른 복잡한...

또는 $다른 방법으로 출력할 수도 있습니다.

  • Unix 호환 echo: ( echo '\044PATH'일부 기타 echo필수 echo -e '\044PATH')
  • printf '\44PATH\n'
  • 고양이<< \EOF
    $경로
    EOF

이러한 백슬래시는 셸에도 분명히 특수하므로 어떻게 인용해야 하는지 참고하세요.

echo '$PATH'이 작업을 수행할 수 있는 방법은 많지만 여기가 아닌 다른 방법을 사용하고 싶은 타당한 이유가 없다는 것이 이제 분명해졌기를 바랍니다.

답변3

큰따옴표 안에 리터럴 $를 사용하면 문제가 발생할 수 있습니다. 다음과 같이 큰따옴표 외부에 $를 생성하면 됩니다.

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."

or like this:

echo "$term is the value of "'$term'

산출:

My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.

xterm is the value of $term

답변4

사용:

echo ''\$PATH'' >> output.txt 

이것은 작동합니다.

관련 정보