Por ejemplo, $PATH
y$HOME
Cuando escribo echo $PATH
, devuelve mi $PATH
, pero quiero hacer eco de la palabra $PATH
y no lo que representa la variable real, echo "$PATH"
tampoco funciona.
Por ejemplo, $PATH
y$HOME
Cuando escribo echo $PATH
, devuelve mi $PATH
, pero quiero hacer eco de la palabra $PATH
y no lo que representa la variable real, echo "$PATH"
tampoco funciona.
Respuestas:
Solo necesitas escapar del dólar $
.
echo \$PATH
$PATH
O rodearlo con comillas simples:
echo '$PATH'
$PATH
Esto asegurará que la palabra no sea interpretada por el shell.
echo -e
en la página del manual.
-e
bandera se usa para expandir, por ejemplo, \t
a un carácter de tabulación literal. No está relacionado con escapar del signo de dólar para evitar la expansión de parámetros.
echo '\$PATH' >> output.txt
los resultados en "/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / opt / vc / bin" se escriben en el archivo , no "$ PATH".
echo '\044*' > first.txt
, generará $ * en first.txt
$
En la sintaxis de la mayoría de las conchas hay un carácter muy especial. Si solo miramos las conchas tipo Bourne, se usa para introducir:
$#
, $var
,${foo:-bar}
$(logname)
(también ${ logname;}
en algunos shells para evitar la subshell)$((1+1))
(también $[1+1]
en algunas conchas).$'\n'
o $"localized string"
.Excepto por el último caso, esas expansiones / sustituciones todavía ocurren dentro de comillas dobles (y dentro $"..."
de bash
o ksh93
)
Para evitar que $
se trate especialmente, debe citarlo con:
echo '$PATH'
o echo '$'PATH
. El que generalmente desea usar, ya que escapa a todos los caracteres (excepto a sí mismo) en la mayoría de los shells.echo \$PATH
. También entre comillas dobles:echo "\$PATH"
echo $'$PATH'
, echo $'\44PATH'
(suponiendo un juego de caracteres ASCII compatibles),echo $'\u0024'
O asegúrese de que no sea parte de una forma válida de expansión como se enumera arriba:
echo "$"PATH
echo $""PATH
,echo $"PATH"
ksh93
y bash
admiten la $"..."
forma de comillas.echo $``PATH
. No hay razón por la que quieras usar esa, excepto para demostrar que es posible.echo "${$+$}PATH"
y otras enrevesadas ...O podría generar eso de $
otra manera:
echo
: echo '\044PATH'
(alguna otra echo
necesidad s echo -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, debería estar claro ahora que, aunque hay muchas formas de hacerlo, no hay una buena razón por la que quiera usar otra cosa que no sea echo '$PATH'
aquí.
Tenga en cuenta que literal $ entre comillas dobles puede ser un problema. Se puede hacer produciendo $ 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'
SALIDA:
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 ya se explicó en otra respuesta. O printf '%s is the value of $term\n' "$term"
como de todos modos, uno no debería usar echo
para datos arbitrarios.
Utilizar:
echo ''\$PATH'' >> output.txt
Esto funcionará
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'
. para obtener más información acerca de las citas, visite esto y esto