Tengo un simple AppleScript que llama a un shell perl script para reemplazar una cadena con otra cadena (aquí una con dos) en archivos con extensiones de archivo especificadas (aquí .txt y .xyz).
Solía funcionar exactamente como lo tengo a continuación, pero ya no lo hace (posiblemente desde la actualización a Mojave el año pasado) .
set CleanFiles to "
s/one/two/g;
"
set myFolder to choose folder with prompt "Choose a folder with files to be cleaned up:"
set theFolder to POSIX path of myFolder
do shell script "find " & theFolder & " \\( -name \\*.txt -o -name \\*.xyz \\) -print0 | xargs -0 perl -i -pe '" & CleanFiles & "'"
No hay ningún mensaje de error, parece que se ejecuta pero no hace nada.
¿Qué puede ir mal?
0 votos
Bueno, lo obvio: se nombra la variable
CleanFiles
en la primera línea, pero utiliceCleanElanFiles
en la última línea. ¿es ése el problema o sólo un error de transcripción?0 votos
@TedWrigley ooops, lo siento no que era un error tipográfico - la cosa real es mucho más complejo, pero lo he desnudado como un ejemplo mínimo aquí
0 votos
Ah. Ok, entonces creo que tu problema es que debes citar la línea de la ruta de la carpeta. cambia la línea 3 para que diga
set theFolder to quoted form of (POSIX path of myFolder)
. Cuando hago eso en mi carpeta de prueba tu script parece funcionar.0 votos
@TedWrigley ¡¡Impresionante, sí!! Eso fue todo. Muchas gracias. Creo que nunca sé cuándo usar la forma de cita y cuándo no... :P De todos modos, si conviertes tu comentario en una respuesta, lo marcaré.
1 votos
Utilice la
quoted form of
siempre que pienses que existe la posibilidad de que se cuelen espacios en blanco en una variable. Sólo recuerda que unix usa el espacio como delimitador, y que si se mete un espacio sin entrecomillar convertirás lo que debería ser un argumento en dos, y echarás a perder toda la lista de argumentos. Añadiré una respuesta...