Osascript verändert script?

fiveyears

Mitglied
Thread Starter
Mitglied seit
29.05.2004
Beiträge
106
Hallo,

wenn ich mit osascript ein script starte, wird komischerweise das script als verändert markiert und das Änderungsdatum und die Änderungsuhrzeit auf jetzt geändert. Wie kommt dieses Verhaltet zustande und kann man dies ändern.

Gruß fiveyears
 

Pill

Aktives Mitglied
Mitglied seit
21.02.2011
Beiträge
3.280
Kann ich bei mir nicht nachvollziehen (10.7.4)
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.629
Ich habe das Problem auch. Es ist aber überall präsent.
Allein wenn ich Dateien mit QuickLook ansehe werden die Daten geändert. Total nervig.

Lösung: Mach nen Schloss an die Datei.

Viele Grüße
 

fiveyears

Mitglied
Thread Starter
Mitglied seit
29.05.2004
Beiträge
106
Bei mir ja (10.7.4), vielleicht liegt es ja am script, ich hatte das script in der Dropbox liegen, es wurde immer wieder synchronisiert. Jetzt habe ich es als app gespeichert, da bleibt die Änderung aus, so wie es sein soll.

Gruß fiveyears

PS: reingefallen, die App wird nicht geändert, aber main.scpt in der App, so dass die Dropbox wieder synchronisiert. Ich starte das script per Geektool aller 30 sek, deshalb mein Problem. Werde wohl ein Shell-script draus basteln, dass wird ausgeführt, ohne das mod-date zu ändern
 

atheist

Neues Mitglied
Mitglied seit
13.03.2011
Beiträge
26
AppleScripts merken sich beim osascript-Aufruf zum Beispiel geänderte Properties. Deshalb dürfte das Script nach dem Aufruf immer neu gesichert werden.

Gruß, Jürgen
 

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.629
Vielleicht missverstehe ich Dich…

Aber während der Laufzeit wird doch der Code nicht manipuliert.
Property Werte werden zur Laufzeit gehandhabt und haben mit der Datei selbst nichts zutun.

Viele Grße
 

atheist

Neues Mitglied
Mitglied seit
13.03.2011
Beiträge
26
Die Properties überleben über die Script-Läufe hinweg.

In einem Script wie

Code:
property counter : 0
on run {}
	set counter to counter + 1
end run
wird counter mit jedem Aufruf von dem Script mit osascript höher, obwohl das Script ja nach jedem Lauf beendet wird. Irgendwo muss sich das Script die Werte merken.

Deshalb verhält sich osascript anscheinend ähnlich wie eine Kombination von load script - store script in einem AppleScript.

Nachtrag: Habe noch mal kurz gespielt: Auch normale Variablen überleben. In folgendem Code:

Code:
on run {}
	try
		counter
	on error
		set counter to 0
	end try
	set counter to counter + 1
end run
wird counter auch mit jedem Lauf duch osascript höher. Damit muss das Script immer gesichert werden, auch, wenn gar keine properties vorkommen. (Zum Ansehen habe ich die Variable in dem Handler immer noch in eine Datei gesichert.)

Gruß, Jürgen
 
Zuletzt bearbeitet:

little_pixel

Aktives Mitglied
Mitglied seit
06.06.2006
Beiträge
4.629
Das stimmt ja auch alles was Du sagst.

Nur passiert das nicht im Skript, sondern im System.
Deshalb erklärt das nicht, weshalb z.B. beim Ausführen eines Skripts das Änderungsdatum neu gesetzt wird.

Viele Grüße
 

atheist

Neues Mitglied
Mitglied seit
13.03.2011
Beiträge
26
Man kann das Problem tatsächlich umschiffen (ist nicht auf meinem Mist gewachsen, habe ich irgendwo gefunden):

Das Script wird tatsächlich nicht neu gesichert, wenn der run-Handler gar keine Variablen deklariert.

Code:
on run {}
	run script file "Pfad:Zu:Deinem:Script.scpt"
end run
ändert sich beim Aufruf mit osascript nicht. Und weil »Script.scpt« nicht ge-store-d wird, ändert es sich auch nicht. (Und property-Änderungen überleben entsprechend nicht.) Sollte das Problem lösen.

Gruß, Jürgen
 

atheist

Neues Mitglied
Mitglied seit
13.03.2011
Beiträge
26
Das passiert nicht im System sondern im Script. Du kannst das Script gern per E-Mail versenden, auch das überleben die Properties und die Variablen im run-Handler!

Gruß, Jürgen
 
Oben