-c
및 -f
각각에 옵션이 필요한 스크립트를 작성하고 싶습니다. 내 스크립트를 실행하면 내가 예기치 않은 오류를 얻을 아래왜이 인수는 구문 분석 오류입니까?
: 첫 번째 경우
$ ./user.sh -c
./user.sh: option requires an argument -- c
Usage: user.sh -c username -f filename
-c username
-f SSH public key
$ ./user.sh -c gg
Error: You have not given a filename.
을, 나는 내가 -c
의 옵션을 잃었 그리고 두 번째 경우에 내가 좋아했을 것이라고 말했다 좋아했 그것은 내가 누락되었다고 말했다 -f
.
질문
어떻게 같은 오류 나눠을해야합니까, 내가 무슨 일을하고 있는가?
user.sh
#!/bin/bash
usage() {
echo "Usage: user.sh -c username -f filename"
echo " -c username"
echo " -f SSH public key"
echo ""
}
if ! [ "$*" ]; then
usage
exit 1
fi
while getopts "c:f:" opt; do
case $opt in
c) user=$OPTARG;;
f) filename=$OPTARG;;
\?)
echo
usage
exit 1;;
*) echo "Internal error: Unknown option.";;
esac
done
if ! [ $filename ]; then
echo "Error: You have not given a filename."
exit 1
fi
if ! [ $user ]; then
echo "Error: You have not given an username."
exit 1
fi
고마워요. '--help' 출력을 쓰는 표준을 알고 있습니까? 예 : 몇 개의 공백이 있어야하며 필수 및 선택 인수와 옵션을 나타낼 수 있습니까? –
요약 행에서 옵션 항목은 대괄호로 묶여 있으며 필수 항목은'cmd [-ov] -c username -f filename'입니다. '충분 함'을 넘어 공백에 대한 표준은 없습니다. 예제에서는 4를 사용했습니다. 충분하다. 2는 아마도 약간의 분리를 제공하는 최소값 일 것입니다. 그렇지 않으면, 탐험 ... 다양한 명령을'--help'로 실행하고 그들이하는 일을보십시오. 일부는 다른 것보다 길다. –