Vorrei definire una semplice abbreviazione di una chiamata a gs
(ghostscript) tramite uno script di shell. Il primo argomento (s) fornisce tutti i file che dovrebbero essere uniti, l'ultimo dà il nome del file di output. Ovviamente, quanto segue non funziona (è solo per mostrare l'obiettivo):Come definire uno script di shell con numero variabile di argomenti?
#!/bin/sh
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$last $1 $2 ...
Come si può fare?
Uno chiamerebbe in genere questo script tramite myscript infile1.pdf infile2.pdf ... outfile.pdf
o myscript *.pdf outfile.pdf
.
Grazie larsk. È possibile avere il nome del file di output come argomento * last * (non il primo)? –
Marius Hofert: Non puoi spostare facilmente l'ultimo elemento, quindi è un po 'più complicato. Qualcosa del genere: 'outputfile = $ {@: -1}; args = ("$ {@: 1: $ (($ {# @} - 1))}") '. Dovresti accettare la risposta di questo larsk. – jordanm
Si * può *, ma è un po 'brutto. Idelic ha un esempio nella sua risposta. Si finisce con molto più cruft nel codice. – larsks