GNU/Linux >> Tutoriales Linux >  >> Linux

Mientras usa printf, ¿cómo escapar de los caracteres especiales en el script de shell?

Para el beneficio de las personas que llegaron aquí haciendo clic en el primer resultado de búsqueda después de buscar en Google "bash printf escaped", la forma correcta de usar printf para generar texto con escape bash es:

printf " %q" "here is" "a few\n" "tests"

Qué salidas (sin una nueva línea final):

 here\ is a\ few\\n tests

Prueba

printf "%s\n" "$string"

Ver imprimirf(1)


Puedes usar $' ' para encerrar las líneas nuevas y los caracteres de tabulación, luego un echo simple será suficiente:

#!/bin/bash 

get_lines() {    
   local string
   string+='The path to K:\Users\ca, this is good'
   string+=$'\n'
   string+='The second line'
   string+=$'\t'
   string+='123'
   string+=$'\n'
   string+='It also has to be 100% nice than %99'

   echo "$string"
}

get_lines

También he hecho un par de otros cambios menores a su script. Además de poner tu FUNCTION_NAME en minúsculas, también he usado la sintaxis de función más compatible. En este caso, no hay mucha ventaja (ya que $' ' las cadenas son una extensión bash de todos modos) pero no hay razón para usar el function func() sintaxis hasta donde yo sé. Además, el alcance de string también puede ser local para la función en la que se usa, así que también lo cambié.

Salida:

The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99

¿Puedo comentar que "man printf" muestra claramente que un carácter "%" tiene que escaparse por medio de otro "%", por lo que printf "%%" da como resultado un solo "%"


Linux
  1. ¿Cómo escribo caracteres que no son ASCII usando echo?

  2. Edite el script de shell mientras se está ejecutando

  3. Mostrar caracteres especiales en Unix mientras usa el comando 'menos'

  4. ¿Cómo insertar una nueva línea en el script de shell de Linux?

  5. Cómo repetir un guión (guion) en shell

Cómo usar variables en secuencias de comandos de Shell

Cómo crear scripts de shell

¿Cómo escapar de las comillas en Shell?

¿Cómo ejecutar comandos en Gnuplot usando Shell Script?

¿Cómo ejecutar un comando en un script de Shell?

¿Cómo escribir caracteres especiales en Linux?