Me gustaría definir una abreviatura simple de una llamada a gs
(ghostscript) a través de un script de shell. El (los) primer (s) argumento (s) dan todos los archivos que se deben combinar, el último da el nombre del archivo de salida. Obviamente, la siguiente no funciona (es sólo para mostrar la meta):¿Cómo se define un script de shell con una cantidad variable de argumentos?
#!/bin/sh
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$last $1 $2 ...
¿Cómo puede hacerse esto?
Uno normalmente llamaría a este script a través de myscript infile1.pdf infile2.pdf ... outfile.pdf
o myscript *.pdf outfile.pdf
.
Gracias larsks. ¿Es posible tener el nombre del archivo de salida como el argumento * last * (no el primero)? –
Marius Hofert: No puede cambiar fácilmente el último elemento, por lo que es un poco más complicado. Algo como esto: 'outputfile = $ {@: -1}; args = ("$ {@: 1: $ (($ {# @} - 1))}") '. Deberías aceptar la respuesta de este larsks. – jordanm
Usted * puede *, pero es un poco feo. Idelic tiene un ejemplo en su respuesta. Terminas con mucho más cruft en tu código. – larsks