スクリプトがあります。
#!/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
等しく出力されます。スクリプトで私が何を間違っているのでしょうか?