매개변수가 충분하지 않다는 것을 사용자에게 알려주는 코드 줄을 추가하고 싶습니다. (아마 어딘가에 오류 메시지가 있을 것입니다. 하지만 어디에 있는지 잘 모르겠습니다.)
blastfile=
comparefile=
referencegenome=
referenceCDS=
help='''
USAGE: sh lincRNA_pipeline.sh
-c </path/to/cuffcompare_output file>
-g </path/to/reference genome file>
-r </path/to/reference CDS file>
-b </path/to/RNA file>
'''
while getopts ":b:c:g:hr:" opt; do
case $opt in
b)
blastfile=$OPTARG
;;
c)
comparefile=$OPTARG
;;
h)
printf "$help"
exit 1
;;
g)
referencegenome=$OPTARG
;;
r)
referenceCDS=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
답변1
한 가지 방법은 getopts
옵션을 구문 분석할 때 옵션 수를 세는 것입니다. 주어진 금액보다 적은 금액이 전달되면 종료할 수 있습니다.
#!/usr/bin/env bash
blastfile=
comparefile=
referencegenome=
referenceCDS=
help='''
USAGE: sh lincRNA_pipeline.sh
-c </path/to/cuffcompare_output file>
-g </path/to/reference genome file>
-r </path/to/reference CDS file>
-b </path/to/RNA file>
'''
while getopts ":b:c:g:hr:" opt; do
## Count the opts
let optnum++
case $opt in
b)
blastfile=$OPTARG
echo "$blastfile"
;;
c)
comparefile=$OPTARG
;;
h)
printf "$help"
exit 1
;;
g)
referencegenome=$OPTARG
;;
r)
referenceCDS=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
[[ $opts -lt 3 ]] && echo "At least 3 parameters must be given"