• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Shell Script „Home“ Ordner

JohnnyAppleseed

Schmalzprinz
Registriert
11.09.07
Beiträge
3.561
Hallo,

in einer Automatoraktion (um neue Post im Briefkasten anzusagen) habe ich folgendes AppleScript eingebunden, um einen Ordner im Finder zu öffnen:
Code:
do shell script "open '/Users/MEIN_NAME/Public/Drop Box'"
Das funktioniert auch wunderbar. Allerdings möchte ich „Public/Drop Box“ unabhängig vom Benutzer aufrufen können. „~/Public/Drop Box“ funktioniert nicht. Ich habe etwas von „$HOME/Public/Drop Box“ gelesen, aber das scheint ebenfalls nicht zu funktionieren. Was kann ich stattdessen verwenden?

Viele Grüße!
 
Ja, leider funktioniert
Code:
do shell script "open ~/Public/Drop\ Box/"
ebenfalls nicht.

Folgende Meldung erscheint:
Automator schrieb:
Syntaxfehler

Es wurde „„"““ erwartet, aber ein „Unbekanntes Token“ wurde gefunden.
 
Ich habe etwas von „$HOME/Public/Drop Box“ gelesen, aber das scheint ebenfalls nicht zu funktionieren.
Das liegt daran, dass du einfache Anführungszeichen darum herum gesetzt hast. Diese verbieten die Interpretation und Auflösung der Variablen und führen dazu, dass das $HOME als ein "literaler String" gedeutet wird, dh du versuchst etwas in einen Ordner zu öffnen dessen Name tatsächlich wortwörtlich auf $HOME lautet.

Im Gegensatz dazu gibt es die "Gänsefüsschen", die erlauben die Auflösung von $-Sequenzen bevor das eigentliche Kommando mit dem Resultat der Auflösung aufgerufen wird.

Q: Was sind "$-Sequenzen"?
A: Es gibt da in der Shell noch ein wenig mehr, was man mit einem einleitenden $ alles erreichen kann, einen Ersatztext aus einer namentlich benannten Variable einsetzen zu lassen (wie hier) ist nur eine der vielen Möglichkeiten.

So wird es klappen:
Code:
do shell script "open \"$HOME/Public/Drop Box\" "
Diese doppelten Anführungszeichen musst du im Gegensatz zu den einfachen mit dem Backslash "maskieren" - weil die auch von AppleSkript selbst schon benutzt werden. Die sollen aber an das Shellkommando durchgereicht werden, daher die "Maske".
 
Bananenbieger, doch, das geht! Lag der Fehler jetzt nur an dem einen fehlenden Backslash? Was ist der Unterschied zwischen einem und zweien?


Nachträglich hinzugefügt:

Danke auch an dich, Rastafari. Deine Lösung funktioniert ebenfalls, die Erklärung leuchtet mir auch ein.

Ich nehme mal an, es ist jetzt egal, welche der beiden Lösungen ich nehme, richtig?
 
Es handelt sich um die Maskierung, die Rastafari erwähnt hat.
Wenn Du einen Befehlsstring in Gänsefüßchen packst, wird \" als " an den Shellbefehl weitergegeben und \\ als \

Der Shell ist es egal, ob Du [tt]"Drop Box"[/tt] oder [tt]Drop\ Box[/tt] schreibst. In beiden Fällen wird das als [tt]Drop Box[/tt] interpretiert.
 
Alles klar! Da ich zum Zeitpunkt meines Beitrags den von Rastafari noch nicht gesehen habe, konnte ich mir daraus noch keinen Reim machen. Jetzt läuft es exakt wie ich es möchte. Danke! :-)