Linux/Unix Shell Scripting - Pasar variable bash a parametro archivo C

 
Vista:
sin imagen de perfil
Val: 9
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pasar variable bash a parametro archivo C

Publicado por sont (5 intervenciones) el 12/02/2017 01:37:32
Hola a todos.
La pregunta que hago, la verdad que es un poco liada.
Tengo un archivo en bash script donde en una línea llamo a un archivo C.
El problema es que le paso un parámetro al archivo C que es una variable bash (string).

El parámetro de C tiene que recoger todos los caracteres incluso si delante lleva un espacio.
Pongo de ejemplo un código de los tantos que he intentado:

1
2
3
4
5
#!/bin/bash
var="\" uno dos\""       #lleva un espacio delante
printf "%s" "$var"         #imprime todo bien con su espacio
sha256=$(printf "%s %s" "/home/santi/prueba/sha256.out"   "$var")       #aqui pasa la variable bash al parámetro de C
 $(printf "%s" "$sha256")        #no me sale el resultado esperado

Ademas de no recoger el primer carácter (espacio) tampoco recoge la segunda palabra, porque el archivo C espera un parámetro.
He intentado de varias formas:
asi:
1
sha256=$(printf "%s \"%s\"" "/home/santi/prueba/sha256.out"   "$var")
etc
También decir que he conseguido pasar la variable correcta con sus comillas y me interpreta todo, comillas incluidas.

Saludos
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
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pasar variable bash a parametro archivo C

Publicado por xve (309 intervenciones) el 12/02/2017 11:39:38
Hola Sont, porque no simplemente lo llamas? sin tanta complicación?

1
resultado=`/home/santi/prueba/sha256.out uno dos`

fíjate en las comillas que tienen que ir al revés...

Te sirve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pasar variable bash a parametro archivo C

Publicado por sont (5 intervenciones) el 12/02/2017 13:28:27
Muy agradecido por responder.
Pues no me sirve como me comentas, $var es una variable dinámica de un script bastante grande, esto que he puesto es solo un ejemplo.
Estoy por pasar todo a C y quitarme este problema.
No estoy muy acostumbrado a usar bash script y me olvidé de esas comillas que usa bash.
Me has ayudado a recordarlo.
Gracias a ti he avanzado bastante pero no termino de afinar. Comento:
en linea de comandos con bash
$ echo -n " uno dos" | sha256sum = 0fd6be8df20e85231784836e4c7897c712......

en archivo.sh
./archivo.sh = archivo.sh: línea 3: 0fd6be8df20e85231784836e4c7897c712......: orden no encontrada

archivo.sv
1
2
3
4
#!/bin/bash
var=" uno dos"
sha256=$(`/home/santi/prueba/sha256.out "$var"`)
echo $sha256

El resultado me da bien pero me tira un error de orden no encontrada.

Gracias por tu tiempo
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
sin imagen de perfil
Val: 9
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pasar variable bash a parametro archivo C

Publicado por sont (5 intervenciones) el 12/02/2017 14:10:16
Ok solucionado, estaba ejecuando con $( .
Lo he solucionado asi:
sha256=`/home/santi/prueba/sha256.out "$var"`

Tus comentarios me han servido de mucho.

Saludos
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 xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pasar variable bash a parametro archivo C

Publicado por xve (309 intervenciones) el 13/02/2017 08:45:05
Me alegro que te sirviera...

Puedes utilizar o las comillas o el paréntesis con el dolar delante, pero las dos a la vez no...
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