$PATH
예를 들어 ,$HOME
입력하면 echo $PATH
my 가 반환되지만 실제 변수가 나타내는 것이 아니라 $PATH
단어를 에코하고 싶지만 작동하지 않습니다.$PATH
echo "$PATH"
답변1
당신은 달러를 탈출해야합니다 $
.:
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 $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
이것은 작동합니다.