이 스크립트가 두 개의 매개변수를 허용하지 않는 이유는 무엇입니까?

이 스크립트가 두 개의 매개변수를 허용하지 않는 이유는 무엇입니까?

암호

#!/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

관련 정보