달러 기호를 어떻게 에코할 수 있나요?

달러 기호를 어떻게 에코할 수 있나요?

$PATH예를 들어 ,$HOME

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

답변1

당신은 달러를 탈출해야합니다 $.:

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
    $PATH
    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 

이것은 작동합니다.

관련 정보