¿Cómo ejecutar un script de shell en una Mac (10.7.4) para instalar automáticamente las actualizaciones?

1

Estoy tratando de ejecutar este script de shell que se supone que debe hacer esto:

  • Este script utiliza el programa de actualización de software en OSX para verificar automáticamente las actualizaciones e instalarlas. También registra todas las actualizaciones en el archivo /Library/Management/update.log.

  • Primero verifica si hay algún usuario conectado, y si es así, registra al usuario en el archivo de registro y finaliza.

  • Si no hay ningún usuario conectado, actualiza la computadora, registra la información y se reinicia.

Sigo recibiendo este error:

update.sh: line 9: syntax error near unexpected token `fi'

update.sh: line 9: `fi'

Aquí está el guión:

#!/bin/sh    
users=$(users)
users1=$(echo "${#users}")
if [ $users1 -lt 1 ]    
then   
date >> /Library/Management/update.log && /usr/sbin/softwareupdate -aiv >> 
/Library/Management/update.log && /sbin/reboot    
else    
date >> /Library/Management/update.log && echo "Logged in users: " >> 
/Library/Management/update.log && echo $(users) >> /Library/Management/update.log    
fi

¿Algunas ideas?

Ulises Aguilar
fuente
Intenta en #!/bin/bashlugar de !/bin/sh. Me han dicho que puede haber un problema si el shell deseado no es el objetivo o si el she-bang no se usa correctamente. Especialmente si tiene la intención de hacerlo en scripts de ejecución automática como corn-jobs (o algunos mac-os equivalentes).
Abhinav Kulshreshtha
tiene el # pero por alguna razón cuando lo escribí en esta página no se mostraba.
Ulises Aguilar
¿Qué pasa con el uso en bashlugar de sh. Probarlo, #!/bin/bash. Nunca utilicé un MAC real, pero unos meses en hakintosh, sé que zsh o csh es principalmente shell predeterminado en él. En Linux, el valor predeterminado es bash.
Abhinav Kulshreshtha
Woah! Gracias por señalar esta increíble herramienta CLI softwareupdate. Nunca lo supe.
kalaracey

Respuestas:

0

Las líneas que comienzan con datefaltan caracteres de continuación de línea. Reemplácelos con algo como esto:

date >> /Library/Management/update.log && /usr/sbin/softwareupdate -aiv >> \
/Library/Management/update.log && /sbin/reboot    
Lri
fuente
Todavía recibo el mismo error
Ulysses Aguilar