Per prima cosa, cambia il popup di Shell da / usr / bin / perl a / bin / bash. Questo è ciò che sta causando l'errore: sta tentando di eseguire lo script con perl e non è in sintassi perl valida.
In secondo luogo, lo script stesso ha bisogno di un po 'di lavoro. $@
si espande in tutti gli argomenti (in questo caso, i percorsi di tutti i file selezionati), ma lo script prevede solo un elemento. Se non vuoi che fallisca se sono selezionati più elementi, dovresti semplicemente farlo operare sul primo o farlo scorrere su tutti gli elementi. il ciclo è in genere quello che si desidera e, in effetti, quando si aggiunge tale azione al servizio di Automator, è necessario riempire automaticamente un modello per eseguire il loop sugli articoli. Successivamente, è necessario inserire virgolette su tutti i riferimenti a percorsi di file (e riferimenti variabili in generale) o sarà confuso irrimediabilmente dai nomi di file / cartelle con spazi. Successivamente, il percorso (i) che sta per ricevere includerà il nome completo del file, incluso ".md", quindi l'aggiunta di un altro ".md" lo farà fallire. Per ottenere il nome file di output, potresti voler rimuovere ".md" prima di aggiungere ", tex".
Ecco il mio attacco rapido a una sceneggiatura:
for f in "$@"
do
if [[ "$f" = *.md ]]; then
/path/to/pandoc -s --template=generic.latex "$f" "${f%.md}.tex"
fi
done
Dovrai compilare il percorso completo dell'eseguibile pandoc, al posto di "/ path / to / pandoc" nello script. Probabilmente puoi finanziarlo eseguendo il comando which pandoc
nella tua shell normale.
L'ho fatto saltare qualcosa di diverso dai file ".md"; potresti voler cambiare quella parte. In tal caso, potrebbe essere necessario generalizzare la parte "${f%.md}.tex"
- che rimuove un'estensione ".md" prima di aggiungere ".tex", ma se il file di input ha un'estensione diversa verrà semplicemente virato su ".tex" in Oltre a qualsiasi cosa ci sia. Attenzione: non usare "$ {f%. *}. Tex" perché in alcuni casi questo rimuoverà parte del nome della directory in cui si trova il file!
Oh, e per l'uso effettivo come servizio Finder, devi rimuovere l'azione "Ottieni elementi del Finder Selezionati" - questo è positivo per i test in Automator, ma devi rimuoverlo o aggiungerà tutto ciò che è selezionato nel Finder a ciò che dovrebbe eseguire (probabilmente significa che viene eseguito due volte su tutto).