このスクリプトが2つのパラメータを受け入れないのはなぜですか?

このスクリプトが2つのパラメータを受け入れないのはなぜですか?

パスワード

#!/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スクリプトを安全にインストールする方法は?実際に理解するのは簡単です(-ne2つ以上の引数が間違いである可能性があるため、より適切です)。

if [ $# -ne 2 ]; then
    echo "Exactly 2 filenames are needed"
    exit 1
fi

また、拡張子を指定しないでください。次のコマンドを実行する必要があります。

pdf2eps 1 ./01-02-2002-01-02-03

おすすめ記事