Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/04/2009, 14:39
samy4ever
 
Fecha de Ingreso: agosto-2008
Mensajes: 143
Antigüedad: 16 años, 5 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