Por ejemplo, $PATH
y$HOME
Cuando escribo, echo $PATH
devuelve my $PATH
, pero quiero repetir la palabra $PATH
y no lo que representa la variable real, echo "$PATH"
tampoco funciona.
Respuesta1
Solo necesitas escapar del dólar $
.:
echo \$PATH
$PATH
O rodéelo entre comillas simples:
echo '$PATH'
$PATH
Esto asegurará que el shell no interprete la palabra.
Respuesta2
$
en la sintaxis de la mayoría de los shells hay un carácter muy especial. Si solo miramos shells tipo Bourne, se usa para introducir:
- expansiones de parámetros como en
$#
,$var
,${foo:-bar}
- sustitución de comandos como en
$(logname)
(también${ logname;}
en algunos shells para evitar el subshell) - expansión aritmética como en
$((1+1))
(también$[1+1]
en algunos shells). - otras formas de citar en algunos shells como
$'\n'
o$"localized string"
.
Excepto en el último caso, esas expansiones/sustituciones todavía ocurren entre comillas dobles (y dentro $"..."
de bash
o ksh93
)
Para evitar que $
reciba un tratamiento especial, debe cotizarlo con:
- comillas simples:
echo '$PATH'
oecho '$'PATH
. El que generalmente querrás usar, ya que escapa a todos los caracteres (excepto a sí mismo) en la mayoría de los shells. - barra negra:
echo \$PATH
. También entre comillas dobles:echo "\$PATH"
- en algunos shells, algún otro operador de comillas:
echo $'$PATH'
,echo $'\44PATH'
(suponiendo un juego de caracteres compatible con ASCII),echo $'\u0024'
O asegúrese de que no sea parte de una forma válida de expansión como se enumera arriba:
echo "$"PATH
. Deben evitarse porque a algunos shells les gustaecho $""PATH
,echo $"PATH"
ksh93
ybash
admiten la$"..."
forma de comillas.echo $``PATH
. No hay ninguna razón por la que quieras usarlo excepto para demostrar que es posible.echo "${$+$}PATH"
y otros más complicados...
O podrías generarlo de $
otra manera:
- con un compatible con Unix
echo
:echo '\044PATH'
(algunos otrosecho
necesitanecho -e '\044PATH'
) printf '\44PATH\n'
gato << \EOF $RUTA EOF
Tenga en cuenta que esas barras invertidas deben citarse, ya que, obviamente, también son especiales para el shell.
Con suerte, ya debería quedar claro que, aunque hay muchas formas de hacerlo, no hay una buena razón para querer usar otra cosa que no sea echo '$PATH'
aquí.
Respuesta3
Tenga en cuenta que el $ literal dentro de comillas dobles puede ser un problema. Se puede hacer generando $ fuera de las comillas dobles, así:
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'
PRODUCCIÓN:
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
Respuesta4
Usar:
echo ''\$PATH'' >> output.txt
Esto funcionará.