GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se muestra una sola barra invertida cuando se usan comillas?

Siempre pensé que bash trata las barras invertidas de la misma manera cuando se usan sin o con comillas dobles, pero estaba equivocado:

[[email protected] ~]$ echo "foo \ "
foo \
[[email protected] ~]$ echo foo \ # Space after \
foo

Entonces pensé que las barras invertidas siempre se imprimen cuando se usan comillas dobles, pero:

[[email protected] ~]$ echo "foo \" "
foo "
[[email protected] ~]$ echo "foo \\ "
foo \

¿Por qué se muestra la barra invertida en la primera línea de código?

Respuesta aceptada:

La sección 3.1.2.3 Comillas dobles del manual GNU Bash dice:

La barra invertida conserva su significado especial solo cuando va seguida de uno de
los siguientes caracteres:‘$ ', '` ’, ‘" ', '\ ', o newline . Dentro de las comillas dobles, se eliminan las barras invertidas seguidas de uno
de estos caracteres. Las barras invertidas que preceden a los caracteres
sin un significado especial no se modifican. Una comilla doble puede estar
entre comillas dobles precediéndola de una barra invertida. Si
está habilitado, la expansión del historial se realizará a menos que aparezca un '! ’ que aparece
entre comillas dobles se escapa usando una barra invertida. La barra invertida que precede
al '! ' no se elimina.

Así \ entre comillas dobles se trata de forma diferente a \ entre comillas simples y \ comillas exteriores. Se trata literalmente, excepto cuando está en condiciones de hacer que se trate literalmente un carácter que, de otro modo, podría tener un significado especial entre comillas dobles.

Tenga en cuenta que secuencias como \' , \? y \* se tratan literalmente y la barra invertida no se elimina, porque ' , ? y * ya no tienen un significado especial cuando están entre comillas dobles.


Linux
  1. ¿Por qué todos usan Docker?

  2. ubicación del archivo temporal cuando se usa tmpfile() en C

  3. ¿Por qué mi $LD_LIBRARY_PATH se desarma cuando uso screen con bash?

  4. ¿Por qué usar innodb_file_per_table?

  5. REJECT vs DROP al usar iptables

Por qué todos deberían intentar usar Linux

Al usar Vlc, ¿por qué el protector de pantalla sigue activándose?

¿Por qué Shotwell tiene las posiciones X e Y invertidas cuando se usa Recortar?

¿Por qué no aparecen los colores de Git cuando se usa el reloj?

¿Por qué mi compilación de Ubuntu se retrasa al mover ventanas?

Uso de / al usar cd