bash quotes double-quotes single-quotes

¿Cómo afecta el signo del dólar principal a las comillas simples en Bash?



quotes double-quotes (3)

Causa que las secuencias de escape sean interpretadas.

$ echo $''Name/tAge/nBob/t24/nMary/t36'' Name Age Bob 24 Mary 36

(Y SO maneja las pestañas de una manera ridícula, así que prueba esta en casa)

Necesito pasar una cadena a un programa como argumento de la CLI de Bash, por ejemplo

program "don''t do this"

La cadena puede incluir cualquier caracter como ''$'' , ''/' , etc. y no quiero que Bash haga ninguna modificación. Así que pienso en usar comillas simples.

Sin embargo, lo siguiente no funciona:

program ''don/'t do this'' //escape doesn''t work in single quote

Mientras que los siguientes dos trabajos:

program $''dont/'t do this'' //seems fine, but any other side effects? program ''dont''/'''do this'' //breaking into 3 parts

El primer enfoque parece mejor, ya que adquiere menos pre-modificación (coloque el símbolo del dólar al frente y sustituya cada / a // ), pero no sé qué más podría hacer el DOLLAR SIGN.

Realmente busqué en Google esto pero no puedo encontrar lo que necesito ...


No encontrará una manera más rápida o más eficiente que:

eval RESULT=/$/'$STRING/'

Por un lado, este es el tipo de cosa que eval está ahí, y se evita el costo loco de bifurcar subprocesos por todas partes, como las respuestas anteriores parecen sugerir. Tu ejemplo:

$ foo=''/u25b6'' $ eval bar=/$/'$foo/' $ echo "$bar" ▶


Usar $ como prefijo le dice a BASH que intente encontrar una variable con ese nombre. $'' es una sintaxis especial ( completamente explicada aquí ) que habilita el procesamiento de cadenas ANSI-C. En este caso, el tic no es "tomar el valor literal hasta el siguiente tic single". Debería ser bastante seguro de usar. Los inconvenientes son que es BASH solamente y bastante poco común, por lo que muchas personas se preguntarán qué significa.

La mejor manera es usar comillas simples. Si necesita una comilla simple en una cadena, debe reemplazarla por ''/''' . Esto finaliza la cadena anterior entrecomillada, le agrega una comilla simple ( /' ) y luego comienza una nueva cadena entre comillas simples. Esta sintaxis funciona con cualquier descendiente del shell Bourne , es bastante fácil de entender y la mayoría de las personas reconoce rápidamente el patrón.

La alternativa es volver a colocar cada tilde con ''"''"'' que se traduce como '''' terminar cadena actual entre comillas, anexar cadena entre comillas dobles que contiene solo un tilde, reiniciar cadena entre comillas simples ''''. Esto evita el carácter de escape y se ve muy bien simétrico. También funciona al revés si necesita una comilla doble en una cadena con comillas dobles: "''"''" .