Linux/Unix Shell Scripting - problema con sentencia IF en ejucion de binarios

 
Vista:

problema con sentencia IF en ejucion de binarios

Publicado por Jochelo (3 intervenciones) el 12/12/2011 21:17:47
tengo el siguiente extracto de shell

APP_HOME=/usuarios/exgesccr/lancorp/Shell;

if ($APP_HOME/LC_acumulacion $APP_HOME/LC_acumulacion.xml); then
echo "done"
else
echo "fail "
fi

Donde LC_acumulacion es un bynario compilado de C++ y LC_acumulacion.xml es el archivo de configuraciones.

Si lo ejecuto de esta forma la condición asume falso, lo que es correcto, ya que por default es asi.

El programa principal si todo es correcto retorna un 1. Por lo que hice la siguiente modificación:

APP_HOME=/usuarios/exgesccr/lancorp/Shell;

if ($APP_HOME/LC_acumulacion $APP_HOME/LC_acumulacion.xml) = 1; then
echo "done"
else
echo "fail "
fi

De esta forma me arroja lo siguiente:
start_acumulacion.sh: syntax error at line 10: `=1' unexpected
(start_acumulacion.sh es el nombre de la shell)

Alguna idea de como corregir esto???

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

problema con sentencia IF en ejucion de binarios

Publicado por xve (309 intervenciones) el 12/12/2011 22:31:57
Hola Jochelo, interpreto que lo quieres, es si existen o no los dos archivo, verdad? yo lo haría así:
1
2
if [ -f $APP_HOME/LC_acumulacion -a -f $APP_HOME/LC_acumulacion.xml ]; then
...

Aqui te dejo un listado de los varlores para comparaciones en bash...
http://www.lawebdelprogramador.com/foros/Linux_Unix_Shell_Scripting/1301129-bash._Listado_de_valores_para_comparaciones.html
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

problema con sentencia IF en ejucion de binarios

Publicado por Jochelo (3 intervenciones) el 13/12/2011 13:33:08
xve,

Creo que no me explique bien.

Lo que necesito es que dada la ejecución del binario, es leer su respuesta
LC_acumulacion existe retorna un int, retorna un 1 si es exitoso.

Entonces con esa respuesta hacer la comparación para seguir con otros procesos
Lo que pretendo en esa linea es que el resultado de la ejecucion de LC_acumulacion se compare con 1, de ser asi muestre Done de lo contrario muestre Fail
if ($APP_HOME/LC_acumulacion $APP_HOME/LC_acumulacion.xml) = 1; then

Alguna idea, o esto es posible?
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: 50
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

problema con sentencia IF en ejucion de binarios

Publicado por caic (99 intervenciones) el 13/12/2011 13:40:59
Hola,

has probado con "-eq"?

if [ $loquesea -eq 1 ]; then
blablabla...
fi

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

problema con sentencia IF en ejucion de binarios

Publicado por xve (309 intervenciones) el 13/12/2011 14:47:05
Perdona, no te entendí correctamente... yo lo que haría, es ejecutar primero las aplicaciones, y coger el resultado en una variable... algo así:
1
var1=`$APP_HOME/LC_acumulacion`

(fíjate en la dirección de las comillas...)

luego haría el if con var1...

Coméntame si te sirve, ok?
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

problema con sentencia IF en ejucion de binarios

Publicado por Jochelo (3 intervenciones) el 13/12/2011 19:38:43
Ahora si!!!

APP_HOME=/usuarios/exgesccr/lancorp/Shell;
acu=`$APP_HOME/LC_acumulacion $APP_HOME/LC_acumulacion.xml`;

echo "--------- Resultado Acu--------------------------------------------------------------------------------------"
echo $acu;
echo "--------- Fin Resultado Acu----------------------------------------------------------------------------------"

if echo $acu | grep "Cierre Archivos de Log"; then
echo "done"
else
echo "fail"
fi

funciona bien para lo que necesito. (No devolvió el int que estaba declarado en el fuente C++, sino que devolvió lo que imprime ese fuente)
Solo me queda si puedo optimizar eso, o lograr capturar el valor que devuelve el fuente(no se si se puede).

Muchas gracias por su ayuda

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