Wie führe ich ein Shell-Skript auf einem Mac (10.7.4) aus, um Updates automatisch zu installieren?

1

Ich versuche, dieses Shell-Skript auszuführen, das dies tun soll:

  • Dieses Skript verwendet das Software-Update-Programm unter OS X, um automatisch nach Updates zu suchen und diese zu installieren. Außerdem werden alle Aktualisierungen in der Datei /Library/Management/update.log protokolliert.

  • Zunächst wird geprüft, ob Benutzer angemeldet sind. In diesem Fall wird der Benutzer in der Protokolldatei protokolliert und beendet.

  • Wenn kein Benutzer angemeldet ist, wird der Computer aktualisiert, die Informationen protokolliert und ein Neustart durchgeführt.

Ich bekomme immer wieder diesen Fehler:

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

update.sh: line 9: `fi'

Hier ist das Drehbuch:

#!/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

Irgendwelche Ideen?

Ulysses Aguilar
quelle
Versuchen #!/bin/bash anstatt !/bin/sh. Das wurde mir dort gesagt kann ein Problem sein, wenn die beabsichtigte Hülle nicht das Ziel ist oder der She-Bang nicht richtig verwendet wird. Vor allem, wenn Sie beabsichtigen, es in automatisch ausgeführten Skripten wie Corn-Jobs (oder einigen Mac-OS-Äquivalenten) zu machen.
Abhinav Kulshreshtha
es hat das # aber aus irgendeinem Grund, als ich es in diese Seite eintippte, würde es nicht auftauchen.
Ulysses Aguilar
Was ist mit bash anstatt sh. Versuch es, #!/bin/bash. Ich habe nie einen echten MAC benutzt, aber ein paar Monate auf dem Hackintosh, ich weiß, dass ksh oder csh meistens die Standard-Shell ist. Unter Linux ist die Standardeinstellung bash.
Abhinav Kulshreshtha
Woah! Vielen Dank, dass Sie auf dieses großartige CLI-Tool hingewiesen haben softwareupdate. Ich wusste nie davon.
kalaracey

Antworten:

0

Die Zeilen, die mit beginnen date Es fehlen Zeilenfortsetzungszeichen. Ersetzen Sie sie durch Folgendes:

date >> /Library/Management/update.log && /usr/sbin/softwareupdate -aiv >> \
/Library/Management/update.log && /sbin/reboot    
Lri
quelle
Ich bekomme immer noch den gleichen Fehler
Ulysses Aguilar