我想通过一个shell脚本来定义对gs(ghostscript)的调用的简单缩写。第一个参数给出应该合并的所有文件,最后一个给出输出文件的名称。显然,以下不行(这只是为了显示目标):
#!/bin/sh gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$last $1 $2 ...
如何才能做到这一点?
一个人通常会通过myscript infile1.pdf infile2.pdf … outfile.pdf或者myscript * .pdf outfile.pdf来调用这个脚本。
bash变量$ @和$ *扩展到命令行参数列表。一般来说,您将要使用“$ @”(即$ @由双引号括起来)。如果有人通过你的脚本一个参数包含,这将做正确的事情。
所以如果你在你的脚本中有这样的话:
outputfile=$1 shift gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$outputfile "$@"
你打电话给你这样的脚本:
myscript out.pdf foo.ps bar.ps "another file.ps"
这将扩大到:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=out.pdf foo.ps bar.ps "another file.ps"
有关详细信息,请阅读bash手册页的“特殊参数”部分。