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?
#!/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.bash
anstattsh
. 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.softwareupdate
. Ich wusste nie davon.Antworten:
Die Zeilen, die mit beginnen
date
Es fehlen Zeilenfortsetzungszeichen. Ersetzen Sie sie durch Folgendes:quelle