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

[: 42: 1: unexpected operator y ejecutar proceso desde SH en background!

Estas en el tema de [: 42: 1: unexpected operator y ejecutar proceso desde SH en background! en el foro de Unix / Linux en Foros del Web. Hola! EL tema es que he hecho un script y me funciona , pero curiosamente me salta un error de vez en cuando (segun lo ...
  #1 (permalink)  
Antiguo 05/04/2009, 14:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 2 meses
Puntos: 1
[: 42: 1: unexpected operator y ejecutar proceso desde SH en background!

Hola!

EL tema es que he hecho un script y me funciona, pero curiosamente me salta un error de vez en cuando (segun lo que haga):
Código:
samy@samylaptop:~/Escritorio$ sh motiontest.sh 
[: 42: 1: unexpected operator
(la línea 42 es la última del programa, no se si se refiere a la línea ese 42... en caso de qué si, que falta para finalizar el script?)
No se a que se puede referir el error, a qué puede ser? Abajo teneis el script por si quereis echarle un ojo, es bastante simple.

Luego tengo otra pregunta. Cuando ejecuto el comando del script (el $motion) no me lo ejecuta en segundo plano aunque lo tenga puesto como

Código:
`motion &`
Si desde la terminal ejecuto mi script, me sale toda la salida del motion y cualquier cosa que ponga detrás (por ejemplo, un echo "alguna cosa"), no lo hace, ya que como está ejecutando el motion, el script no continúa. Cómo debería hacerlo para que se ejecutara el motion(llamado desde el script) y, a la vez, continuara el script? tengo que redireccionar obligatóriamente la salida (y que no sea la pantalla) para que pueda continuar?

Muchas gracias por vuestra ayuda!

Código:
#!/bin/sh

# Begin editable region
RUTAMCONTROL="/home/samy/Escritorio/motioncontrol"
RUTAMACTUAL="/home/samy/Escritorio/motionactual"
RUTAMLOG="/home/samy/Escritorio/motionlog"
# End editable region

# Variables globales
fecha=`date`
# Fin variables globales

echo "$fecha Empezando comprobación motion" >> $RUTAMLOG
STATUS=`cat $RUTAMCONTROL`
if [ $STATUS -eq 0 ] 
	then
	ENCENDIDO=`ps aux| awk '{if($11 == "motion") print 1;}'` 
	if [ $ENCENDIDO -eq 1 ] 
	then
		echo "   $fecha Apagando motion" >> $RUTAMLOG
		killall motion
		sleep 3
		echo "0" > $RUTAMACTUAL
	else
		echo "   $fecha Motion se mantendrá parado" >> $RUTAMLOG
	fi
else
	if [ $STATUS -eq 1 ] 
	then
		ENCENDIDO=`ps aux| awk '{if($11 == "motion") print 1;}'`
		if [ $ENCENDIDO -eq 1 ] 
		then
			echo "   $fecha Motion se mantendrá encendido" >> $RUTAMLOG
		else
			echo "1" > $RUTAMACTUAL
			echo "   $fecha motion ha sido encendido" >> $RUTAMLOG
			`motion &`
		fi
	else
		echo "$fecha Error en la lectura del motion control" >> $RUTAMLOG
	fi
fi
  #2 (permalink)  
Antiguo 06/04/2009, 13:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: [: 42: 1: unexpected operator y ejecutar proceso desde SH en background!

Ninguna idea de cuando suele darse este error?:(
  #3 (permalink)  
Antiguo 06/04/2009, 16:13
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 20 años, 2 meses
Puntos: 47
Respuesta: [: 42: 1: unexpected operator y ejecutar proceso desde SH en background!

Porque al ejecutarlo con las comillas invertidas, estas haciendo que la salida del comando se ejecute y se hace todo un desastre.

Si simplemente lo querés correr, entonces sacale las comillas.

Saludos.
__________________
¡Volviendo a la programación!
  #4 (permalink)  
Antiguo 06/04/2009, 17:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: [: 42: 1: unexpected operator y ejecutar proceso desde SH en background!

Hola AleSanchez!

Muchas gracias, no tenía ni idea de esto. Mañana lo probaré que ahora no lo tengo aquí.

Así que supongo que si no le pongo las comillas el script no se parará en ningun punto ya que no dará ninguna salida, y tampoco me dirá que hay algo inesperado ya que no tendré salida alguna, no? Mi duda es, aunque no lo muestre, hay error de código en algun punto y por eso me sale el unexpected?

Muchas gracias, mañana pruebo.

Samy
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 01:24.