代码
#!/bin/sh
# http://tex.stackexchange.com/a/20886/13173
# http://unix.stackexchange.com/a/280830/16920
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>
[ $# -lt 2 ] || echo "At least 2 arguments are needed" && exit 1
pdfcrop "$2.pdf"
pdftops -f "$1" -l "$1" -eps "$2-crop.pdf"
rm "$2-crop.pdf"
mv "$2-crop.eps" "$2.eps"
运行它作为
pdf2eps 1 ./01-02-2002-01-02-03.pdf
输出
至少需要 2 个参数
并且没有输出文件。
为什么不能在此处运行 01-02.pdf 上的命令?
答案1
[ $# -lt 2 ] || echo "At least 2 arguments are needed" && exit 1
检查参数数量是否严格小于 2,如果是不是,输出“至少需要 2 个参数”。您需要将其替换||
为&&
:
[ $# -lt 2 ] && echo "At least 2 arguments are needed" && exit 1
我认为你链接到的例子在 /usr/local/bin 中安装 .sh 脚本的安全方法?实际上更容易理解(并且-ne
更适合,因为超过 2 个参数可能是一个错误):
if [ $# -ne 2 ]; then
echo "Exactly 2 filenames are needed"
exit 1
fi
另请注意,您不应该指定扩展名,因此您应该运行命令
pdf2eps 1 ./01-02-2002-01-02-03