gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:42:40 25 4
gpt4 key购买 nike

我想定义一个通过 shell 脚本调用 gs (ghostscript) 的简单缩写。第一个参数给出所有应该合并的文件,最后一个参数给出输出文件的名称。显然,下面的是行不通的(只是为了展示目标):

#!/bin/sh
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$last $1 $2 ...

如何做到这一点?

通常会通过 myscript infile1.pdf infile2.pdf ... outfile.pdfmyscript *.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"

阅读"Special Parameters" bash 手册页部分以获取更多信息。

关于bash - 如何定义具有可变数量参数的 shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com