Simples Shell Skript - Bug?

S

sancierra

Neues Mitglied
Thread Starter
Dabei seit
14.06.2007
Beiträge
18
Reaktionspunkte
0
Hi,

Ich wollte mit Alfred 2 einen Hotkey erstellen, mit dem ich alle unsichtbaren Dateien anzeigen/ wieder verschwinden lassen kann, zumal mir der Command im Terminal mit der Zeit zu anstrengend/zeitraubend wird. Dafür habe ich (mit keinen bis praktisch keinen Kenntnissen von der Materie) ein kleines AppleScript erstellt; der Debugger zeigt keine Errors an und das Ergebnis ("") stimmt eigentlich auch, aber das Skript schafft es nicht, den Wert von 0 auf 1 oder umgekehrt zu ändern... Stattdessen wird einfach der Finder gekillt und neu gestartet.. Weiss einer von euch, wo da der Haken liegen könnte?

Grüsse

set x to do shell script "defaults read com.apple.Finder AppleShowAllFiles"
if x > 0.5 then
set y to "NO"
else
set y to "YES"
end if
do shell script "defaults write com.apple.Finder AppleShowAllFiles -bool " & y & ";killall Finder"
 
Zuletzt bearbeitet:
Hallo,

Code:
if x > 0.5 then
In "x" steht ein Text und keine Zahl. Somit wird Deine Bedingung nie erfüllt.

Viele Grüße
 
Hmm, aber wenn ich den command "Defaults read com.apple.Finder AppleShowAllFiles" im Terminal eingebe, erscheint als output entweder eine 1 (-> unsichtbare dateien angezeigt) oder eine 0 (-> nicht angezeigt), wobei x dann diesen Wert übernimmt. Ich glaube eher, dass im unteren Teil etwas nicht stimmt, isoliert funktioniert das Skript bis zu "end if" bei mir zumindest...

Grüsse
 
Schreibe die letzte Zeile mal so:

do shell script "defaults write com.apple.finder AppleShowAllFiles -bool " & y & ";killall Finder"

Wenn du "killall Finder" in einem extra Shell script ausführst, dann werden die Befehle parallel ausgeführt und es kann sein, dass der Finder beendet wird bevor der Wert geändert wurde.
 
Hallo sancierra,

hast Du Mac OS Extended (Groß-/Kleinschreibung) formatiert?
Was steht denn unter Events?
com.apple.finder mal probieren…

Gruß Andi
 
Schreibe die letzte Zeile mal so:

do shell script "defaults write com.apple.Finder AppleShowAllFiles -bool " & y & ";killall Finder"

Wenn du "killall Finder" in einem extra Shell script ausführst, dann werden die Befehle parallel ausgeführt und es kann sein, dass der Finder beendet wird bevor der Wert geändert wurde.

Hat leider keine Änderung ergeben, das Ergebnis ist immer noch dasselbe.. (siehe unten)


Hallo sancierra,

hast Du Mac OS Extended (Groß-/Kleinschreibung) formatiert?
Was steht denn unter Events?
com.apple.finder mal probieren…

Gruß Andi

Hab keinen case-sensitive drauf, bringt somit keine auch keine Änderung..
Im Eventlog steht als Ergebnis "", was ja an sich korrekt ist, denn der Terminal spuckt nach korrekter Eingabe mit Defaults write keinen Wert aus. Wenn man die if...else - Verknüpfung isoliert und den y-Wert in den Eventlog sendet, stellt man fest, dass diese auch einwandfrei arbeitet.. Habt ihr sonst noch irgendwelche Ideen? ^^ Passiert bei euch etwas, wenn ihr das Skript im Editor laufen lässt?

Grüsse
 
Hallo sancierra,

hm - selbst ein delay von 10 zwischen den 2 shell scripts funktioniert nicht.

Gruß Andi
 
  • Gefällt mir
Reaktionen: sancierra
Das geht nicht?

Code:
[B]set [/B][COLOR=#4F8F00][FONT=Verdana]x [/FONT][/COLOR][B]to [/B][COLOR=#012FBE][FONT=Verdana][B]do shell script[/B][/FONT][/COLOR][FONT=Verdana] "defaults read com.apple.finder AppleShowAllFiles"
[/FONT][FONT=Verdana][B]if[/B] [COLOR=#4f8f00]x[/COLOR] = "1" [B]then[/B][/FONT]
[FONT=Verdana]    [B]set[/B] [COLOR=#4f8f00]y[/COLOR] [B]to[/B] "NO"[/FONT]
[FONT=Verdana][B]else[/B][/FONT]
[FONT=Verdana]    [B]set[/B] [COLOR=#4f8f00]y[/COLOR] [B]to[/B] "YES"[/FONT]
[FONT=Verdana][B]end[/B] [B]if[/B][/FONT]
[COLOR=#012FBE][FONT=Verdana][B]do shell script[/B][/FONT][/COLOR][FONT=Verdana] "defaults write com.apple.finder AppleShowAllFiles -boolean " & [/FONT][COLOR=#4F8F00][FONT=Verdana]y[/FONT][/COLOR][FONT=Verdana] & ";killall Finder"[/FONT]

Damit sollten eigentlich alle angesprochenen Probleme behoben sein.
 
  • Gefällt mir
Reaktionen: sancierra
Jop, ist mir auch sehr suspekt... Liegt das an dem grottigen Code oder an der grottigen Engine von AppleScript?
 
Das geht nicht?

Code:
....

Damit sollten eigentlich alle angesprochenen Probleme behoben sein.

Heureka! Deines funktioniert, ich weiss zwar nicht wieso, denn x=1 hatte ich auch schon ohne Erfolg getestet, aber die Hauptsache ist ja, dass es funktioniert... Vielen Dank für deine/eure schnelle Hilfe!
 
Hallo Pill,

doch so geht's. Wobei ich es nicht ganz verstehe :confused:

Gruß Andi
 
  • Gefällt mir
Reaktionen: sancierra
Ich schätze mal da waren mehrere Faktoren im Spiel. Einer davon war sicher die Kleinschreibung von com.apple.finder
 
  • Gefällt mir
Reaktionen: sancierra
Ah, ja, finder muss immer klein geschrieben sein, dann tut mein Skript auch. Andi hatte ja auch diese Idee, hatte sie nur nicht konsequent umgesetzt :S Vielen Dank!
 
Hallo Pill,

ich hab jetzt noch mal alles durch probiert - lag wirklich am f
Was trotzdem komisch ist...

Gruß Andi
 
Hallo Pill,

ich hab jetzt noch mal alles durch probiert - lag wirklich am f
Was trotzdem komisch ist...

Gruß Andi

Ja, zumal es im Terminal keine Rolle spielt, ob Finder gross oder klein geschrieben wird..
 
Hallo oneOeight,

der Wert wurde schon richtig gesetzt - das ist ja das merkwürdige…

Gruß Andi
 
Zurück
Oben Unten