bash – 如何定义具有可变数量参数的shell脚本?

前端之家收集整理的这篇文章主要介绍了bash – 如何定义具有可变数量参数的shell脚本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过一个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手册页的“特殊参数”部分。

猜你在找的Bash相关文章