Hola a todos!!!!! Soy de argentina, actualmente trabajo con UNIX HP, pero mi pregunta creo que es valida para LINUX, salvo las diferencias. Va la pregunta: Tengo el siguiente esquema que he armado para ejecucion de los procedimientos de la empresa: Shell principal: ARMADO : esta shell verifica que exista un archivo que contiene el utlimo paso de ejecucion la fecha (AAAMMMDDHHMMSS) y el Process ID. Si existe toma el paso ultimo de ejecucion y la fecha (la fecha es para asignarle a todas las corridas la fehca de inicio de ejecucion, asi se haya comenzado hace diez dias atras) Sino existe interpreta que es la primera vez que corre. Segunda shell: ARMADO.sh Esta shell carga en memoria las siguientes: . .DEBITOS_fun.sh es la biblioteca de funciones del producto . .ARMADO_exp.sh esta contiene todos los exports de las variables que necesita el procedimiento. . ARMADO_fun.sh esta contiene las funciones propias de este procedimiento. Luego de cargarlas en memoria empeiza a ejecutar la exportacion de variables y ejecuta funciones como la creacion o no del archivo de estados del procedimiento (esto si tiene o no que crealo lo averiguo cuando ejecuto la shell ARMADO) una vez hecho esto estan todos los pasos que el procedimiento necesita para cumplimentar el objetivo. Mi pregunta es la siguiente: Cuando ejecuto la shell me encontre que varias variables de entorno, por lo que sea, ya sea por error de tipeado o porque me olvide de declararlas, contiene valores nulos. Lo que necesito es: agregar un paso a la shell ARMADO.sh que llamara a una funcion del producto ( DEBITOS:fun.sh) y que debera testear si las variables que se exportaron todas tiene un valor. si asi no fuera, deberá caesrse el procedimiento y decirme que variables son. Gracias por la ayuda que puedan darme. Va ejemplo: ARMADO esta no hace falta ARMADO.sh: . .DEBITOS_fun.sh . .ARMADO_exp.sh . .ARMADO_fun.sh exporto_variales (esta en la ARMADO_exp.sh) (funcion) (Parametros) borro_archivos_temporales $LISTA_ARCHIVOS (esta funcion esta en la DEBITOS_fun.sh) leo_archivos $MOVIMIENTOS (esta funcion esta en la ARMADO-_fun.sh) cargo_archivos $MOVIMIENTOS (esta funcion esta en la ARMADO_fun.sh) con esto alcanza para el ejemplo. Sigo . DEBITOS_fun.sh: function borro_archivos_temporales { rm $1 } ARMADO_fun.sh: function leo_archivos { $EJECUTABLES/leo_archivos $1 } function cargo_archivos { $EJECUTABLES/subo_archivos $1 } ARMADO_exp.sh: export EJECUTABLES=/home/debitos/bin export MOVIMIENTOS=$ARCHIVOS_DEBITOS exprot LISTA_ARCHIVOS= Como veran la variable MOVIMIENTOS tiene asignada un variable no definida y LISTA_ARCHIVOS no tiene asignacion. La idea es armar una funcion generica del producto que iria en la DEBITOS_fun.sh con parametros si los necesita, y que será ejecutada como primer paso de la shell ARMADO.sh y esa funcion lea la ARMADO_exp.sh y verifique que las variables exportadas tiene valo, y no estan con nulos. Espero haber sido claro.