• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Rückgabewert von "do shell script"

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Moin,

vielleicht stehe ich auf der Leitung - aber ich komme nicht drauf. Kann mir jemand folgendes Phänomen erklären (und hat am besten 'ne Lösung, wie man das umgeht):

Ich habe ein Shell-Script, das eine Bilddatei (JPEG) ausspuckt. Wenn ich die Daten aber ins AppleScript übernehmen will, haben sich einige Bytes geändert. Getestet habe ich wie folgt:

1. Ausgabe des Shellscripts direkt in eine Datei umgeleitet

2. Ausgabe des Shellscripts als Rückgabewert von 'do shell script' in eine AS-Variable gespeichert und die dann per AS in eine Datei geschrieben.

Das Ergebnis von 1. ist ein korrektes JPEG-Bild, das Ergebnis von 2. ein beschädigtes JPG-Bild. Mit hexdump habe ich's verglichen - es weichen nur ganz wenige Bytes ab - die Dateilänge ist identisch. Probiert habe ich es sowohl mit Skript Editor als auch im AppleScript Studio/Xcode 2.2 - beides mit identischem Ergebnis.

Meine einzige Idee: Versucht AppleScript da irgendwelche Unix-Steuerzeichen (z.B. 0a -> 0d) zu ersetzen, da es da nur Strings erwartet?

P.S. Die Zuhilfenahme von Temp-Dateien für die Lösung des Problems möchte ich wenn's geht vermeiden.

Vielen Dank für eure Hilfe!

Grüße,

Daisy
 

klausimausi

deaktivierter Benutzer
Registriert
05.01.04
Beiträge
836
Kannst Du vielleicht mal posten, was genau Du machst? AS Skript und shell Skript?
Dann wäre die Fehlersuche sicher einfacher...


Gruß

Klaus
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
klausimausi schrieb:
Kannst Du vielleicht mal posten, was genau Du machst? AS Skript und shell Skript?
Dann wäre die Fehlersuche sicher einfacher...


Gruß

Klaus

Hallo Klaus,

na klar - hier ein einfaches Besipiel:

Testfall 1 - das erzeugt ein korrektes JPEG:
Code:
do shell script ("jhead -st - '" & theFilePath & "' > \"/Volumes/A/Users/pbg4/thumb2.jpg"\"")

Testfall 2 - da ist das Ergebnis beschädigt:

Code:
set rawImageData to (do shell script "jhead -st - '" & theFilePath & "'")

... write rawImageData to ... etc.


<theFilePath> ist ein Pfad (POSIX) zu einem JPEG-Bild mit EXIF-Thumbnail

<jhead> ist ein Commandline-Tool, das (unter anderem) die EXIF-Thumbnails aus JPEG-Dateien extrahieren kann - das gibt's hier (direkter Link zur Datei):

http://www.sentex.net/~mwandel/jhead/os-x/jhead


Grüße,

Daisy
 

klausimausi

deaktivierter Benutzer
Registriert
05.01.04
Beiträge
836
Ich könnte mir auch vorstellen, daß das, was pete bezüglich "line endings" gesagt hat, stimmt.

Hast du das mal ausprobiert?

Ansonsten hätte ich leider auch keine Idee, außer, dann eben nur den kompletten Shellbefehl zu benutzen ;)


Gruß

Klaus
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
pete schrieb:
Das hier ist per default bei Tiger eingestellt (aus der Bibliothek entnommen):

do shell script string : the command or shell script to execute. Examples are ‘ls’ or ‘/[...]
[altering line endings boolean] : change all line endings to Mac-style and trim a trailing one (default true)

Vielleicht hilft Dir also das hier: do shell script "xyz" without altering line endings

Du bist der King, Pete, vielen Dank!

das mit den line endings wars. Das kannte ich noch nicht - ich nehme an, das wurde erst mit Tiger eingeführt? Wie auch immer - jetzt funktioniert's wieder.

Vielen Dank auch dir Klaus :)

Grüße,

Daisy
 

klausimausi

deaktivierter Benutzer
Registriert
05.01.04
Beiträge
836
Stets zu Diensten, der Herr! :)

Schamlose Eigenwerbung:
Ich habe neulich eine kleines Tool (Shareware) für Bilder und Movieframes online gestellt.

Bei Interesse hier mal schauen, die deutsche Version ist unterwegs.
http://www.major-k.de/quick-oe.html


Gruß

Klaus