Foros del Web » Administración de Sistemas » Unix / Linux »

Bash, echo y comillas simples y dobles

Estas en el tema de Bash, echo y comillas simples y dobles en el foro de Unix / Linux en Foros del Web. Hola comunidad! Estoy ejecutando unos comandos desde PHP y les deseo pasar unos datos haciendo echo. Por ejemplo Código: echo 'contenido del usuario' | haceralgo ...
  #1 (permalink)  
Antiguo 30/09/2010, 15:08
Avatar de reyesoft  
Fecha de Ingreso: abril-2006
Ubicación: San Rafael, Mendoza
Mensajes: 311
Antigüedad: 17 años, 11 meses
Puntos: 15
Bash, echo y comillas simples y dobles

Hola comunidad! Estoy ejecutando unos comandos desde PHP y les deseo pasar unos datos haciendo echo. Por ejemplo
Código:
echo 'contenido del usuario' | haceralgo
El tema es que contenido del usuario debo protegerlo obviamente con \.
Todo bien hasta aquí, pero si el usuario desea escribir: don't!3
No puedo hacer ninguna de las siguientes ya que ninguna devuelve lo que necesito: don't!3
Código:
echo 'don't!3'  #error
echo 'don\'t!3' #error
echo 'don''t!3' #salida dont!3
echo "don't\!3" #salida don't\!3
¿Alguna idea? Lo ideal sería comillas simples, ya que es más seguro. Muchísimas gracias de antemano.
__________________
Pablo Reyes

Compra/venta saldos PayPal, Skrill, Neteller, Bitcoins, etc.
  #2 (permalink)  
Antiguo 01/10/2010, 09:09
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Bash, echo y comillas simples y dobles

De entrada me parece una mala idea pasar contenido del usuario a un comando, pero bueno. Esto funciona:

"don't!3"

Pero no estás especificando si el echo es ejecutado por PHP o por la terminal en el servidor, las reglas de escape son ligeramente diferentes
  #3 (permalink)  
Antiguo 01/10/2010, 09:37
Avatar de reyesoft  
Fecha de Ingreso: abril-2006
Ubicación: San Rafael, Mendoza
Mensajes: 311
Antigüedad: 17 años, 11 meses
Puntos: 15
Respuesta: Bash, echo y comillas simples y dobles

Cita:
Iniciado por AlvaroG Ver Mensaje
De entrada me parece una mala idea pasar contenido del usuario a un comando, pero bueno.
Lamentablemente el usuario es quien determina la entrada del comando. Así que es necesario.

Cita:
Iniciado por AlvaroG Ver Mensaje
"don't!3"
echo "don't!3" no funciona porque !3 es convertido al comando 3 del history.

Igualmente, te estoy muy agradecido por responder.
__________________
Pablo Reyes

Compra/venta saldos PayPal, Skrill, Neteller, Bitcoins, etc.
  #4 (permalink)  
Antiguo 01/10/2010, 09:38
Avatar de reyesoft  
Fecha de Ingreso: abril-2006
Ubicación: San Rafael, Mendoza
Mensajes: 311
Antigüedad: 17 años, 11 meses
Puntos: 15
Respuesta: Bash, echo y comillas simples y dobles

EA! He conseguido la solución y usando comillas simples!!

La solución sería:
Código:
echo 'don'"'"'t!3' #funciona :D
Muchas gracias a todos igualmente! Un saludo...
__________________
Pablo Reyes

Compra/venta saldos PayPal, Skrill, Neteller, Bitcoins, etc.
  #5 (permalink)  
Antiguo 01/10/2010, 09:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Bash, echo y comillas simples y dobles

Es verdad. Me olvidé de que !3 expandiría el historial.

Probando, llegué a una forma más corta:

"don't"'!3'

aunque la idea supongo que debería ser automatizar la conversión, lo cual puede hacerse facilmente haciendo un reemplazo de ' por '"'"' en la forma que encontraste, aunque no en la que encontré yo :)

Etiquetas: bash, comillas, dobles, echo, simples
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:57.