• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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