Pfad mit Variable wird nicht erkannt

S

Series 60

Aktives Mitglied
Thread Starter
Dabei seit
31.12.2005
Beiträge
328
Reaktionspunkte
7
Hallo

Wenn ich bei einem Pfad mit einer Variable arbeite, wird das Verzeichnis nicht erkannt, obwohl die Syntax eigentlich korrekt sein müsste, oder? Wenn ich anstelle der Variable direkt meinen Benutzername "Philipp" eintrage funktioniert es einwandfrei. Ich dachte zuerst, der Pfad mit der Variable sei nicht korrekt. Wenn ich das aber teste, indem ich den Pfad mit Variable als Dialog ausgebe, stimmt dieser. Was mache ich falsch?


Mit der Variable wird das Verzeichnis /Users/Philipp/Applications nicht gefunden:


set User to do shell script "whoami"

tell application "Finder"

if exists POSIX file "/Users/" & User & "/Applications" then

do shell script "rm -r /Users/$USER/Applications" with administrator privileges

end if

end tell



Wenn ich den selben Code ohne die Variable verwende funktioniert es:


tell application "Finder"

if exists POSIX file "/Users/Philipp/Applications" then

do shell script "rm -r /Users/$USER/Applications" with administrator privileges

end if

end tell



Vielen Dank
Philipp
 
Nein, da es sich um einen POSIX Pfad handelt und nicht wie eine Zeile weiter unten um einen UNIX Pfad, wäre diese Syntax falsch. Wie bereits geschrieben, wenn ich meinen Code mit Variable als Dialog ausgebe erhalte ich den korrekten Pfad "/Users/Philipp/Applications", darum kann ich mir absolut nicht erklären, warum das Verzeichnis so nicht erkannt wird.
 
Schreib das doch komplett als Shell Script ...
 
also bei mir funktionieren beide varianten, aber ich lass den tell application finder block auch weg, weil unnötig...
 
POSIX Pfade immer so angeben:

do shell script "ls -al " & quoted form of aPath

Das wird Dein Fehler sein, da in Deinem Name ein Leerzeichen etc. enthalten ist.

Viele Grüße
 
@ pmau

Es geht darum, dass nur Administratoren-Berechtigungen verlangt werden, wenn das Verzeichnis vorhanden ist. Ich habe keine Möglichkeit gefunden, das mit reinem Shell Script umzusetzen. Falls es jedoch eine Möglichkeit geben sollte, dann mache ich das gerne so.


@oneOeight

Wenn ich den tell application finder block entferne, habe ich das Problem, dass das Verzeichnis immer gefunden wird, auch wenn es nicht vorhanden ist, warum?


@little_pixel

Das Verstehe ich jetzt nicht ganz. Der Benutzername ist in meinem Fall "Philipp", also weder Leerzeichen noch Sonderzeichen.
 
shell:
Code:
if [ -e ~/Applications ]; 
then sudo rm -r ~/Applications; 
fi

AppleScript:
Code:
[B]tell [/B][COLOR=#0433FF][FONT=Verdana][I]application[/I][/FONT][/COLOR][FONT=Verdana] "Finder"
[/FONT][FONT=Verdana]    [B]try[/B][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]theFolder[/COLOR] [B]to[/B] [COLOR=#0433ff][I]folder[/I][/COLOR] "Applications" [B]of[/B] ([COLOR=#012fbe][B]path to[/B][/COLOR] [COLOR=#331e65]home folder[/COLOR]) [B]as[/B] [COLOR=#0433ff][I]alias[/I][/COLOR][/FONT]
[COLOR=#012FBE][FONT=Verdana][B]do shell script[/B][COLOR=#000000] "rm -r " & [/COLOR][COLOR=#812fdc]quoted form[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#812fdc]POSIX path[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]theFolder[/COLOR][COLOR=#000000] [B]with[/B] [/COLOR]administrator privileges[/FONT][/COLOR]
[FONT=Verdana]    [B]end[/B] [B]try[/B][/FONT]
[B]end [/B][B]tell[/B]
 
  • Gefällt mir
Reaktionen: Series 60
Vielen Dank, funktioniert einwandfrei.
 
Zurück
Oben Unten