$PATH
예를 들어 ,$HOME
입력하면 echo $PATH
my 가 반환되지만 실제 변수가 나타내는 것이 아닌 $PATH
단어를 에코하고 싶지만 작동하지 않습니다.$PATH
echo "$PATH"
답변1
USD를 탈출하면 됩니다 $
:
echo \$PATH
$PATH
또는 작은따옴표로 묶습니다.
echo '$PATH'
$PATH
이렇게 하면 쉘이 단어를 해석하지 않게 됩니다.
답변2
$
대부분의 쉘 구문에서 매우 특수한 문자입니다. Bourne과 유사한 쉘을 살펴보면 소개에 사용됩니다.
$#
,$var
, 등의 매개변수 확장${foo:-bar}
- 명령 대체는 다음과 같습니다
$(logname)
(${ logname;}
일부 쉘에서는 서브쉘을 피하기 위해) $((1+1))
($[1+1]
일부 쉘에서도) 와 같은 산술 확장 .$'\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
이것은 작동합니다.