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?
#!/bin/bash
lugar 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).bash
lugar desh
. 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.softwareupdate
. Nunca lo supe.Respuestas:
Las líneas que comienzan con
date
faltan caracteres de continuación de línea. Reemplácelos con algo como esto:fuente