Linux/Unix Shell Scripting - Conversion contrabarras a barras oblicuas

 
Vista:

Conversion contrabarras a barras oblicuas

Publicado por AlvaroPR (3 intervenciones) el 26/10/2016 17:00:22
Buenas tardes,

Estoy haciendo un script para convertir una ruta mapeada en Windows a la ruta de la máquina Redhat.

El problema lo tengo al leer el argumento 1, si hago la conversion sin pasarlo como argumento (metiendo la cadena en un archivo) sale bien, pero como argumento simplemente desaparece.
Al ser "\" lee como que deberia seguirle un carácter especial y al no encontrarlo lo guarda sin las barras.

Y siendo mas pijo no quiero tener que poner comillas en la ruta del argumento.

Ejemplos:

Como quiero que sea:

./script.sh Z:\Prueba\ejemplo\
Z:/Prueba/ejemplo

Como sale tras pasarlo como argumento:

./script.sh Z:\Prueba\ejemplo\
Z:Pruebaejemplo

¿Alguien sabe como hacer para que pille el argumento como una cadena de caracteres planos (que pase de buscar caracteres especiales vaya)?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Conversion contrabarras a barras oblicuas

Publicado por AlvaroPR (3 intervenciones) el 27/10/2016 08:19:11
Si, si el problema no lo tengo con el sed o el tr.

El problema lo tengo con que cuando los uso sobre la primera variable de entrada de teclado "$1", en vez de guardarse el argumento integro "Z:\Prueba\ejemplo\" se carga las contrabarras y almacena "Z:Pruebaejemplo".

Entonces cuando uso tr o sed no hace ninguna conversion en "Z:Pruebaejemplo" por que no tiene lo que busca.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Conversion contrabarras a barras oblicuas

Publicado por Tom (361 intervenciones) el 27/10/2016 09:19:35
Sí, estuve repasando un poco ese link y algunos más similares, y no parece que nadie proponga un método que no pase por las comillas simples. Creo que no tienes más remedio que usarlas, es como funciona el shell ...

La otra única solución (que yo sepa) es que antes de pasarle los paths windows a tu shell ya hayas modificado la cadena para cambiar un backslash por dos (para que backslash sea un carácter normal en lugar de uno especial).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Conversion contrabarras a barras oblicuas

Publicado por AlvaroPR (3 intervenciones) el 27/10/2016 15:37:58
Al final he pasado por el aro, habra que ejecutarlo con comillas.

Me ahorra al menos unos segundos asi que igual hasta merece la pena y con un alias pongo ya las comillas del principio.

La vida de un informático vago...

Gracias :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Simón
Val: 63
Plata
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Conversion contrabarras a barras oblicuas

Publicado por Simón (20 intervenciones) el 31/10/2016 18:09:20
1
Z:\\Prueba\\ejemplo\\
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Simón
Val: 63
Plata
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Conversion contrabarras a barras oblicuas

Publicado por Simón (20 intervenciones) el 31/10/2016 18:32:25
1
sed -i 's/\\/\\\\/g' $1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar