• 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

Sondernzeichen in "Do shell script"

TBH

Alkmene
Registriert
28.12.06
Beiträge
31
Guten Tag allerseits,
ich habe schon google und die Forumssuche befragt, aber anscheinend hatte ich die falschen Suchworte (escape special characters applescript ...). Momentan habe ich folgenden Befehl in einer .command-Datei:
curl "http://fritz.box:49000/upnp "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:ForceTermination xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>"

Jetzt würde ich diesen Befehl zwecks größerem Komfort (Benutzerabfragen usw) in ein AppleScript verpacken und per "do shell script" ausführen lassen. Wie maskiere ich jetzt die Sonderzeichen im o.g. Befehl richtig? Welche Zeichen fallen überhaupt unter die zu maskierenden Zeichen?
Vielen Dank,
TBH
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
wenn der befehl so in der shell läuft, dann solltest du damit auskommen, die doppelten anführungen zu maskieren (mit \" ), damit diese den string nicht unterbrechen, den du im applescript an do shell script übergibst. wären backslashs im string, so müssten diese ebenfalls maskiert werden (mit \\).

ein wenig merkwürdig kommt mir diese stelle ja vor wegen der verschachtelten doppelten anführungen. das klappt so? :
"Content-Type: text/xml; charset="utf-8""
 

TBH

Alkmene
Registriert
28.12.06
Beiträge
31
Ich hab den Befehl von http://www.wehavemorefun.de/fritzbox/index.php/Mac_OS_X#Neue_IP-Adresse_per_UPnP (Kenne mich mit UPnP leider nicht wirklich aus) und er läuft anstandslos in der Shell.
Maskiert man nur die Anführungszeichen wird das Script nicht ausgeführt mit dem Fehler:

sh: -c: line 0: syntax error near unexpected token `<'
sh: -c: line 0: `curl "http://fritz.box:49000/upnp "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:ForceTermination xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>"'

Die spitzen Klammern zu maskieren hilft aber irgendwie auch nichts...