Linux/Unix Shell Scripting - no encuentro el error en un Script bash (cut)

   
Vista:

no encuentro el error en un Script bash (cut)

Publicado por Alberto (1 intervención) el 19/07/2010 05:08:57
Buenas tengo una consulta que tal vez sea una tonteria (soy nuevo en linux) pero que me gustaria resolver ya que no he encontrado en internet nigun lugar que hablen de esto, el problema es el siguiente tengo un script que recibe por parámetro un string:

quiero sacar los campos de dicho string del tipo : dir=x&largo=y
pero si lo hago como me parece no me anda

ladir=`echo $1 | cut -d& -f1 | cut -d= -f2`
largo=`echo $1 | cut -d& -f2 | cut -d= -f2`
si lo corro me tira el siguiente error:

cut: la opción requiere un argumento -- 'd'
Pruebe `cut --help' para más información.
./prueba3: línea 5: -f1: no se encontró la orden
cut: la opción requiere un argumento -- 'd'
Pruebe `cut --help' para más información.
./prueba3: línea 7: -f2: no se encontró la orden

No command 'def' found, did you mean:
Command 'df' from package 'coreutils' (main)
Command 'ref' from package 'elvis-tools' (universe)
Command 'gdef' from package 'firebird2.1-classic' (universe)
Command 'gdef' from package 'firebird2.0-super' (universe)
Command 'gdef' from package 'firebird2.1-super' (universe)
Command 'gdef' from package 'firebird2.0-classic' (universe)
def: command not found
[1]+ Hecho ./prueba3 abc


pero lo raro es que con otros caracteres si anda, por ej:

ladir=`echo $1 | cut -d: -f1 | cut -d{ -f2`
largo=`echo $1 | cut -d: -f2 | cut -d{ -f2`

igual probe poner el "&" y el "=" entre "" , ' ', ` ` pero tampoco anduvo probé dejando un espacio entre la "d" y el "&" y tampoco
bueno si alguien ve esto y tiene alguna idea y me avisa le agradezco, porque no se donde esta el problema
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

RE:no encuentro el error en un Script bash (cut)

Publicado por Tom (253 intervenciones) el 19/07/2010 10:09:00
Prueba "escapando" los caracteres ('=' y '&' son caracteres especiales para la shell).
No sé si se verá aquí, pero eso se hace con el backslash ('\') antes del carácter especial:

cut -d\& -f1
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