스크립트가 있습니다.
#!/bin/sh
function usage() {
cat << EOF >&2
Usage: $0 [-h] [-rs <start_num>] [-re <end_num>]
-h: help: displays list of options for command $0
-rs<int>: range start: should be the number to go from - the lower of the two ranges. <int>
-re<int>: range end: should be the number to add up to - the highest of the two ranges. <int>
EOF
exit 1
}
function addition() {
sum=0
for number in "$@"; do
sum=$(( sum + number))
done
# set defaults
rangeStart=0
rangeEnd=0
error=false
# loop arguments
OPTIND=1
while getopts rs:re:h: o; do
case $o in
rs) rangeStart=$OPTARG;;
re) rangeEnd=$OPTARG;;
h) usage;;
*) error=true;;
esac
done
shift $((OPTIND - 1))
echo $rangeStart
echo $rangeEnd
if [ "$error" = true ] ; then
echo 'Invalid argument passed. See addition -h for usage.'
else
echo 'Total: '$sum
fi
}
현재는 사용자가 다음을 입력할 수 있도록 명령 매개변수를 추가하려고 합니다.
$ addition -rs 4 -re 10
4에서 10까지 반복하여(그래서 추가 4 + 5 + 6 + 7 + 8 + 9 + 10
) 합계를 출력합니다.
그러나 위의 작업을 수행하면 다음 출력이 반환됩니다.
0
0
전달된 매개변수가 유효하지 않습니다. 사용법은 -h 추가를 참조하세요.
그래서 내 매개변수를 인식하지 못합니다. 명령을 다음과 같이 변경할 때:
$ addition -rs4 -re10
그것은 동일하게 출력됩니다. 스크립트에서 내가 뭘 잘못하고 있는 걸까요?