代码
#!/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"
Run Code Online (Sandbox Code Playgroud)
运行它
pdf2eps 1 ./01-02-2002-01-02-03.pdf
Run Code Online (Sandbox Code Playgroud)
输出
至少需要 2 个参数
并且没有输出文件。
为什么你不能在这里运行 01-02.pdf 上的命令?
[ $# -lt 2 ] || echo "At least 2 arguments are needed" && exit 1
Run Code Online (Sandbox Code Playgroud)
检查参数的数量是否严格小于 2,如果不是,则输出“至少需要 2 个参数”。您需要更换||有&&:
[ $# -lt 2 ] && echo "At least 2 arguments are needed" && exit 1
Run Code Online (Sandbox Code Playgroud)
我认为您以安全方式链接到在 /usr/local/bin 中安装 .sh 脚本的示例?实际上更容易理解(并且-ne更适合,因为超过 2 个参数可能是错误的):
if [ $# -ne 2 ]; then
echo "Exactly 2 filenames are needed"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
还要注意,你不应该指定扩展名,所以你应该运行命令
pdf2eps 1 ./01-02-2002-01-02-03
Run Code Online (Sandbox Code Playgroud)