Foros del Web » Administración de Sistemas » Unix / Linux »

comandos que no funcionan en un script y si en la terminal

Estas en el tema de comandos que no funcionan en un script y si en la terminal en el foro de Unix / Linux en Foros del Web. Hola, hace tiempo que os consulto y hasta ahora había podido solucionar todos los problemas que me he encontrado pero con este llevo ya unas ...
  #1 (permalink)  
Antiguo 20/08/2012, 09:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
comandos que no funcionan en un script y si en la terminal

Hola, hace tiempo que os consulto y hasta ahora había podido solucionar todos los problemas que me he encontrado pero con este llevo ya unas horas y no hay forma por eso he decidido pediros ayuda.

tengo esta secuencia de comandos
Código:
REGISTROS=`grep -n "row" dia0.xml | awk 'NR==2' | cut -f1 -d:`; echo "Total registros" $REGISTROS
básicamente busca las coincidencias "roow" en el archivo dia0.xml y me devuelve solo el número de linea de la segunda coincidencia.

pues esto funciona perfectamente en la terminal pero dentro de un script deja la variable $REGISTROS vacia y me da error el expr.
esta es el código
Código:
REGISTROS=`grep -n "row" $FILE0X | awk 'NR==2' | cut -f1 -d:`
COMPLETO=165
FALTAN=`expr $COMPLETO - $REGISTROS`; echo "Total nulls "$FALTAN
como podeis ver son identicas solo que en el caso del script la variable $FILE0X contiene toda la ruta del fichero dia0.xml

a ver si alguien me puede desatascar.......

Saludos

edito:

he separado esta parte de script que no funciona a un script de pruebas y funciona perfectamente
el código es este
Código:
# Defino el fichero donde estan los datos
FILE0X=/var/www/temperatura/data/dia0.xml
# Elimino el fichero temporar de pruebas
rm /tmp/null.txt
# Obtengo el numero de linea de la segunda coincidencia con "row"
REGISTROS=`grep -n "row" $FILE0X | awk 'NR==2' | cut -f1 -d:`
# Calculo las lineas que faltan para llegar a 165
FALTAN=`expr 165 - $REGISTROS`; echo "Total nulls "$FALTAN
# Creo las lineas que faltan  en un fichero temporal
for i in `seq 1 $FALTAN`
do
   echo "<null/>" >> /tmp/null.txt
done
# compruebo el nº de lineas en el fichero temporal.
cat /tmp/null.txt | wc -l
la única variable reutilizada en $FILE0X, el resto son nuevas
cada vez lo entiendo menos......

Última edición por saba01; 20/08/2012 a las 11:28 Razón: nuevas pruebas
  #2 (permalink)  
Antiguo 20/08/2012, 21:51
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 7 meses
Puntos: 47
Respuesta: comandos que no funcionan en un script y si en la terminal

El comando que corrés y guardás en la variable REGISTROS debe estar dando algún error, y por eso luego, cuando haces la resta con "expr" no te devuelve nada.
Fijate de asegurarte que la ruta al archivo dia0.xml sea la correcta. En tu ejemplo no le pones ruta, por lo que supongo que el script está corriendo en el mismo directorio que ese archivo.
Probá mostrar la variable REGISTROS inmediatamente despues de correr el comando (echo $REGISTROS) para ver que contenido guarda.

Saludos.
__________________
¡Volviendo a la programación!
  #3 (permalink)  
Antiguo 21/08/2012, 01:17
 
Fecha de Ingreso: agosto-2012
Mensajes: 4
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: comandos que no funcionan en un script y si en la terminal

Cita:
Iniciado por AleSanchez Ver Mensaje
El comando que corrés y guardás en la variable REGISTROS debe estar dando algún error, y por eso luego, cuando haces la resta con "expr" no te devuelve nada.
Fijate de asegurarte que la ruta al archivo dia0.xml sea la correcta. En tu ejemplo no le pones ruta, por lo que supongo que el script está corriendo en el mismo directorio que ese archivo.
Probá mostrar la variable REGISTROS inmediatamente despues de correr el comando (echo $REGISTROS) para ver que contenido guarda.

Saludos.
gracias por responder

efectivamente "expr" da error porque $REGISTROS esta vacío.
la ruta de dia0.xml esta en el script de pruebas (segunda linea)


En el script de pruebas que pongo al final del primer post va todo perfecto.

Etiquetas: bash
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:42.