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)
Haciendo la analogía con java.
tengo un metodo declarado de la siguiente forma:
public int haceAlgo(){
return 1;
}
Si yo invoco esto de la siguiente forma:
int resultado = haceAlgo();
Entonces al ejecutar me quedare con que "resultado" tiene el valor 1
por lo que si hago el siguiente if:
if (resultado == 1){
logger.debug("Done");
}
el archivo log escribiría Done.
Es esto lo que trato de hacer, pero no lo consigo en Shell
Alguna idea de como corregir esto???
Saludos
Problema con ejecucion de procesos en Shell
- maiku
- Moderador
- Mensajes: 1541
- Registrado: Jue Abr 19, 2007 7:00 am
- Ubicación: Cojutepeque, El Salvador C. A.
Re: Problema con ejecucion de procesos en Shell
creo que hay muchas diferencias respecto a bash y java por lo que uno no te sirve para asegurar que va funcionar en el otro.
primero necesitas saber la existencia de un fichero por lo que entiendo debes ejecutar:
que no es lo mismo que usar el = (comparación entre caracteres ) y tampoco la comparación numéricas para un valor "igual" -eq http://www.linux-es.org/node/238
el problema no es de bash, es de conceptos.
primero necesitas saber la existencia de un fichero por lo que entiendo debes ejecutar:
Código: Seleccionar todo
if [ -e $APP_HOME/LC_acumulacion $APP_HOME/LC_acumulacion.xml ] ; then
el problema no es de bash, es de conceptos.
Grüße...
Maiku
Full linux alchemist!!!
Maiku
Full linux alchemist!!!
Re: Problema con ejecucion de procesos en Shell
Claramente existen diferencias entre ambos lenguajes, por ello hice una analogia para mostrar mas técnicamente lo que necesitaba.maiku escribió:creo que hay muchas diferencias respecto a bash y java por lo que uno no te sirve para asegurar que va funcionar en el otro.
primero necesitas saber la existencia de un fichero por lo que entiendo debes ejecutar:
que no es lo mismo que usar el = (comparación entre caracteres ) y tampoco la comparación numéricas para un valor "igual" -eq http://www.linux-es.org/node/238Código: Seleccionar todo
if [ -e $APP_HOME/LC_acumulacion $APP_HOME/LC_acumulacion.xml ] ; then
el problema no es de bash, es de conceptos.
El problema no era si existen los archivos(siempre estarán y si no, se cae y la comparación sera correcta).
Grax por la ayuda.
-------------------------------------------------------------------------------------------------------------------------
Seguí dándole vuelta al tema y conseguí lo siguiente:
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
Que 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).
Si alguien me ayuda, o lo logro alguna mejora a lo que ya tengo, lo pongo acá y edito el asunto como solucionado
Saludos
Distribucion utilizada: la que mas use fue mandrake 9.2
Ahora en el pc de la casa(casi no lo uso), tengo ubuntu 10 con windows 7 ultimate
En el trabajo, windows XP y ubuntu 10
Ahora en el pc de la casa(casi no lo uso), tengo ubuntu 10 con windows 7 ultimate
En el trabajo, windows XP y ubuntu 10
- maiku
- Moderador
- Mensajes: 1541
- Registrado: Jue Abr 19, 2007 7:00 am
- Ubicación: Cojutepeque, El Salvador C. A.
Re: Problema con ejecucion de procesos en Shell
hola, ahora veo que interpreté mal y no noté que refería a ejecutar el binario y obtener un resultado. No sé si existe una mejor práctica, pero cuando yo necesitaba un resultado a partir de un binario en C y quería que un script lo leyera, lo escribía el resultado a un archivo/fichero temporal (sí en /tmp/ ) digamos un valor 1 ó 0 similar a este caso y después lo leía y asignaba desde el script.Jochelo escribió: (No devolvió el int que estaba declarado en el fuente C++, sino que devolvió lo que imprime ese fuente)
Grüße...
Maiku
Full linux alchemist!!!
Maiku
Full linux alchemist!!!
Re: Problema con ejecucion de procesos en Shell
Existe el comando tempfile (en BSD: tmpfile). Pero la idea es básicamente la misma: crea un archivo temporal con lo que señales que debe ir dentro. La diferencia, es que el archivo temporal, en lugar de tener un nombre inteligible, se llama según una cadena de caracteres al azar.
Una segunda diferencia, es que resulta levemente más complejo utilizar tempfile, que crear directamente el archivo temporal.
Una segunda diferencia, es que resulta levemente más complejo utilizar tempfile, que crear directamente el archivo temporal.
-
- Temas similares
- Respuestas
- Vistas
- Último mensaje
-
- 1 Respuestas
- 1199 Vistas
-
Último mensaje por neurus
-
- 0 Respuestas
- 1410 Vistas
-
Último mensaje por aspana4661
-
- 0 Respuestas
- 784 Vistas
-
Último mensaje por fmendoza
-
- 2 Respuestas
- 1239 Vistas
-
Último mensaje por EINOM
-
- 5 Respuestas
- 3059 Vistas
-
Último mensaje por maiku