Você só precisa escapar do dólar $
.:
echo \$PATH
$PATH
Ou coloque entre aspas simples:
echo '$PATH'
$PATH
Isso garantirá que a palavra não seja interpretada pelo shell.
Por exemplo, $PATH
e $HOME
Quando digito echo $PATH
, ele retorna meu $PATH
, mas quero fazer eco da palavra $PATH
e não da variável real, echo "$PATH"
também não funciona.
$
na sintaxe da maioria dos shells é um caractere muito especial. Se olharmos apenas para as conchas do tipo Bourne, é usado para introduzir:
$#
, $var
, ${foo:-bar}
$(logname)
(também ${ logname;}
em alguns shells para evitar o subshell) $((1+1))
(também $[1+1]
em alguns shells). $'\n'
ou $"localized string"
. Exceto pelo último caso, essas expansões / substituições ainda ocorrem entre aspas duplas (e dentro de $"..."
em bash
ou ksh93
)
Para impedir que $
seja tratado especialmente, é necessário citá-lo com:
echo '$PATH'
ou echo '$'PATH
. Aquele que você geralmente deseja usar, pois ele escapa de todos os caracteres (exceto a si mesmo) na maioria dos shells. echo \$PATH
. Também dentro de aspas duplas: echo "\$PATH"
echo $'$PATH'
, echo $'PATH'
(assumindo um charset compatível com ASCII), echo $'\u0024'
Ou certifique-se de que não faz parte de uma forma válida de expansão, conforme listado acima:
echo "$"PATH
echo $""PATH
, echo $"PATH"
ksh93
e bash
suportam a forma de aspas $"..."
. echo $''PATH
e outros complicados ... Ou você pode gerar esse echo "${$+$}PATH"
de outra forma:
$
: echo
compatível com Unix (outros echo '4PATH'
s precisam echo
) echo -e '4PATH'
cat << \EOF $PATH EOF
Note como essas barras invertidas precisam ser citadas, pois elas também são especiais para o shell.
Espero que esteja claro agora que, embora haja muitas maneiras de fazer isso, não há uma boa razão para você usar qualquer outra coisa além de printf 'PATH\n'
aqui.
Observe que as aspas duplas literais $ dentro podem ser um problema. Isso pode ser feito produzindo o $ fora das aspas duplas, assim:
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'
OUTPUT:
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
Uso:
echo ''\$PATH'' >> output.txt
Isso funcionará.