I would like to define a simple abbreviation of a call to gs (ghostscript) via a shell script. The first argument(s) give all the files that should be merged, the last one gives the name of the output file. Obviously, the following does not work (it’s just for showing the goal):
#!/bin/sh
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$last $1 $2 ...
How can this be done?
One would typically call this script via myscript infile1.pdf infile2.pdf ... outfile.pdf or myscript *.pdf outfile.pdf.
The bash variables
$@and$*expand into the list of command line arguments. Generally, you will want to use"$@"(that is,$@surrounded by double quotes). This will do the right thing if someone passes your script an argument containing whitespace.So if you had this in your script:
And you called your script like this:
This would expand to:
Read the “Special Parameters” section of the
bashman page for more information.