2017-02-08 2 views
-1

Ich versuche, dies als eine launchd ausführen zu lassen, habe ich die PLIST und aktiviert den Überwachungspfad zu überprüfen, wenn Studenten Fernverwaltung ändern.Fehler in Bash Shell Skript IF-Anweisung

Ich möchte eine if-Anweisung, die prüft, ob der ARD-Agent ausgeführt wird und nicht den Kickstart-Befehl ausführt.

Wenn der Dienst nicht läuft, funktioniert es einwandfrei. aber wenn der Dienst bereits läuft, bekomme ich diesen Fehler

/Users/user/Desktop/test.sh: line 3: [[: 14682 0 com.apple.RemoteDesktop.agent: syntax error in expression (error token is "0 com.apple.RemoteDesktop.agent") 

Hier ist das Skript;

#!/bin/bash 

if [[ $(launchctl list | grep '^\d.*RemoteDesktop.*') -eq "" ]]; then 
    sudo sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -users admin -access -on -privs -all 
else 
    exit 0 
fi 

Wenn jemand helfen könnte, wäre es sehr geschätzt.

+0

'launchd' Ihr Skript ausgeführt wird mit'/bin/sh', nicht '/ bin/bash', so' [[] ist kein legales Kommando. – chepner

Antwort

3

könnten Sie Anführungszeichen verwenden und schreiben "$(launchctl list ...)", aber es ist wahrscheinlich sauberer zu tun:

#!/bin/bash 

if ! launchctl list | grep -q '^\d.*RemoteDesktop.*'; then 
    sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -users admin -access -on -privs -all 
else 
    exit 0 
fi