Por exemplo, $PATHe$HOME
Quando digito, echo $PATHele retorna meu $PATH, mas quero repetir a palavra $PATHe não o que a variável real representa, echo "$PATH"também não funciona.
Por exemplo, $PATHe$HOME
Quando digito, echo $PATHele retorna meu $PATH, mas quero repetir a palavra $PATHe não o que a variável real representa, echo "$PATH"também não funciona.
Respostas:
Você só precisa escapar do dólar $.
echo \$PATH
$PATH
Ou coloque-o entre aspas simples:
echo '$PATH'
$PATH
Isso garantirá que a palavra não seja interpretada pelo shell.
echo -ea página de manual.
-esinalizador é usado para expandir, por exemplo, \tum caractere de tabulação literal. Não está relacionado a escapar do cifrão para impedir a expansão dos parâmetros.
echo '\$PATH' >> output.txtresulta em "/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / jogos: / usr / local / jogos: / opt / vc / bin" sendo gravados no arquivo , não "$ PATH".
echo '\044*' > first.txta saída será $ * em first.txt
$na sintaxe da maioria das conchas é um caractere muito especial. Se olharmos apenas para as conchas 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 algumas conchas).$'\n'ou $"localized string".Exceto no último caso, essas expansões / substituições ainda ocorrem entre aspas duplas (e dentro $"..."de bashou ksh93)
Para impedir que isso $seja tratado especialmente, você precisa citá-lo com:
echo '$PATH'ou echo '$'PATH. O que você geralmente deseja usar, pois escapa a todos os caracteres (exceto a si mesmo) na maioria das conchas.echo \$PATH. Também dentro de aspas duplas:echo "\$PATH"echo $'$PATH', echo $'\44PATH'(assumindo um conjunto de caracteres ASCII compatível),echo $'\u0024'Ou verifique se não faz parte de uma forma válida de expansão, conforme listado acima:
echo "$"PATHecho $""PATH,echo $"PATH"ksh93e bashsuportam a $"..."forma de aspas.echo $``PATH. Não há razão para que você queira usá-lo, exceto para mostrar que é possível.echo "${$+$}PATH" e outros complicados ...Ou você pode imprimir de $outra maneira:
echo: echo '\044PATH'(alguns outros echoprecisam echo -e '\044PATH')printf '\44PATH\n'cat << \ EOF $ PATH EOF
Observe como essas barras invertidas precisam ser citadas, pois também são especiais para o shell, obviamente.
Espero que esteja claro agora que, embora existam muitas maneiras de fazer isso, não há uma boa razão para você querer usar outra coisa, exceto echo '$PATH'aqui.
Observe que $ dentro de aspas duplas literais podem ser um problema. Isso pode ser feito produzindo $ 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'
RESULTADO:
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
echo "$term is the value of \$term"como já explicado em outra resposta. Ou printf '%s is the value of $term\n' "$term", de qualquer maneira, não se deve usar echodados arbitrários.
Usar:
echo ''\$PATH'' >> output.txt
Isso vai funcionar.
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'. Para mais informações sobre citando, visite este e este