Esta es la forma en que me gustaría código es:
on run {input, parameters}
set aURL to input as string
set sanatizedURL to ¬
do shell script "sed -e 's:%:\\\\%:g' -e 's:#:\\\\string#:g' <<< " & aURL's quoted form
return sanatizedURL
end run
Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver completo el código.
Notas:
input
es una lista por ejemplo:
{"http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false"}
set aURL to input as string
hace:
http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false
En la do shell script
comando sed
sólo necesita ser llamado una vez, no dos como en el original código. sed
puede tomar varios comandos mediante el uso de la -e
opción, por lo tanto no hay necesidad en este caso a la tubería de la salida de uno sed
comando a otro sed
comando.
No es necesario echo
algo sed
como se puede procesar un archivo o un aquí de la cadena, por lo tanto el uso de <<<
en la do shell script
comando, seguido por & aURL's quoted form
que es por ejemplo:
'http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false'
Citando a la value
de aURL
mantiene el shell de procesamiento de cualquier shell caracteres especiales en la cadena.
Por lo tanto, cuando se ejecuta, el do shell script
comando se ve, como por ejemplo:
do shell script "sed -e 's:%:\\\\%:g' -e 's:#:\\\\string#:g' <<< 'http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false'"
Sugerencia: Mouse sobre el y de desplazamiento horizontal para ver completo el código.
El uso de :
vs /
en la sed
comando es una preferencia personal, en este caso como se hace el comando más fácil de leer cuando se tiene que hacer múltiples escapa.
El uso de echo
en el original código aplana la lista a una cadena, sin embargo yo prefiero no usar ese método para hacer la do shell script
comando de menos complicado.