Chciałbym zdefiniować prosty skrót połączenia do gs
(ghostscript) za pomocą skryptu powłoki. Pierwszy argument (argumenty) podaje wszystkie pliki, które powinny zostać scalone, ostatni podaje nazwę pliku wyjściowego. Oczywiście, poniższe elementy nie działają (służy tylko do wskazania celu):Jak zdefiniować skrypt powłoki ze zmienną liczbą argumentów?
#!/bin/sh
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$last $1 $2 ...
Jak można to zrobić?
Zazwyczaj można nazwać ten skrypt przez myscript infile1.pdf infile2.pdf ... outfile.pdf
lub myscript *.pdf outfile.pdf
.
Dzięki larsks. Czy możliwe jest podanie nazwy pliku wyjściowego jako * ostatniego * (nie pierwszego) argumentu? –
Marius Hofert: Nie można łatwo przesunąć ostatniego elementu, więc jest to nieco trudniejsze. Coś takiego: 'outputfile = $ {@: -1}; args = ("$ {@: 1: $ (($ {# @} - 1))}") '. Powinieneś przyjąć tę odpowiedź larsków. – jordanm
Ty * możesz *, ale to trochę brzydkie. Idelic ma przykład w swojej odpowiedzi. Kończy się to o wiele więcej w twoim kodzie. – larsks