En primer lugar, cambia la ventana emergente de Shell de /usr/bin/perl a /bin/bash. Eso es lo que está causando el error -- está tratando de ejecutar el script con perl, y no está en sintaxis perl válida.
En segundo lugar, el propio script necesita algo de trabajo. $@
se expande a todos los argumentos (en este caso, las rutas de todos los archivos seleccionados), pero tu scriptespera sólo un elemento. Si no quieres que falle si se seleccionan varios elementos, debes hacer que opere sólo en el primero, o que haga un bucle sobre todos los elementos. el bucle es normalmente lo que quieres, y de hecho cuando añades esa acción a tu servicio Automator debería auto-llenar una plantilla para hacer un bucle sobre los elementos. A continuación, es necesario poner comillas dobles alrededor de todas las referencias a las rutas de los archivos (y las referencias a las variables en general) o se confundirá irremediablemente con los nombres de archivos/carpetas con espacios. A continuación, la(s) ruta(s) que va a recibir incluirá(n) el nombre completo del archivo, incluyendo ".md", por lo que hay que añadir otro ".md" hará que falle. Para obtener el nombre de archivo de salida, puede eliminar el ".md" antes de añadir ",tex".
Aquí está mi intento rápido en un script:
for f in "$@"
do
if [[ "$f" = *.md ]]; then
/path/to/pandoc -s --template=generic.latex "$f" "${f%.md}.tex"
fi
done
Tendrás que rellenar la ruta completa al ejecutable de pandoc, en lugar de "/ruta/para/pandoc" en el script. Probablemente puedas financiar esto ejecutando el comando which pandoc
en su caparazón habitual.
Hice que omitiera todo lo que no fueran archivos ".md"; tal vez quieras cambiar esa parte. Si es así, es posible que tenga que generalizar el "${f%.md}.tex"
que elimina la extensión ".md" antes de añadir ".tex", pero si el archivo de entrada tiene una extensión diferente, añadirá ".tex" además de lo que haya. Advertencia: no utilice "${f%.*}.tex" porque en algunos casos eliminará parte del nombre del directorio en el que se encuentra el archivo.
Ah, y para el uso real como un servicio de Finder, es necesario eliminar la acción "Get Selected Finder Items" - que es bueno para las pruebas en Automator, pero hay que quitarlo o va a añadir lo que está seleccionado en el Finder a lo que se supone que se ejecuta en (probablemente significa que se ejecuta dos veces en todo).