¿Cómo puedo hacerme eco de los signos de dólar?

¿Cómo puedo hacerme eco de los signos de dólar?

Por ejemplo, $PATHy$HOME

Cuando escribo, echo $PATHdevuelve my $PATH, pero quiero repetir la palabra $PATHy 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:

  1. expansiones de parámetros como en $#, $var,${foo:-bar}
  2. sustitución de comandos como en $(logname)(también ${ logname;}en algunos shells para evitar el subshell)
  3. expansión aritmética como en $((1+1))(también $[1+1]en algunos shells).
  4. 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 basho ksh93)

Para evitar que $reciba un tratamiento especial, debe cotizarlo con:

  • comillas simples: echo '$PATH'o echo '$'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
  • echo $""PATH,echo $"PATH" . Deben evitarse porque a algunos shells les gusta ksh93y bashadmiten 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 otros echonecesitan 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, 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á.

información relacionada