He creado un script que toma algunas entradas de usuario de mí (indicaciones con diálogos básicos), a continuación, genera un independiente script que me envía un mensaje de texto y un correo electrónico, que luego puedo programar como una alerta de calendario para desencadenar en una fecha / hora deseada.
Todo funciona bien, hasta que hay un apóstrofe/comilla simple en la entrada del usuario. Por ejemplo, si el cuerpo de mi correo electrónico es:
Este es mi correo electrónico
el script no se ejecutará, con:
sh: -c: line 0: unexpected EOF while looking for matching `"'
sh: -c: line 1: syntax error: unexpected end of file
Aquí está el código correspondiente:
set savePath to (path to desktop as text) & _appName & ".app"
set code to "osacompile -e '
tell application \"Messages\"
set imessageservice to 1st service whose service type = iMessage
set iMessageBuddy to buddy \"" & _smsNumber & "\" of imessageservice
send \"" & _smsBody & "\" to iMessageBuddy
end tell
tell application \"Mail\"
set theMessage to make new outgoing message with properties {visible:true, subject:\"" & _emailSubject & "\", content:\"" & quoted form of _emailBody & "\"}
tell theMessage
make new to recipient at end of to recipients with properties {address:\"" & _emailAddress & "\"}
end tell
send theMessage
end tell' -o " & quoted form of POSIX path of savePath
do shell script code
De nuevo, funciona muy bien siempre que no pase un apóstrofe. En mi búsqueda, parece que escapar apóstrofes en script es realmente, realmente difícil de conseguir. He intentado numerosos enfoques (heredoc, múltiples líneas -e, forma citada de, etc.) pero hasta ahora no he podido conseguir que ninguno funcione. Si alguien sabe cómo evitar esto, me encantaría escucharlo.