не может заставить скрипты запускаться на Lubuntu (Xenial) Minimal (+ LXDE) VM с помощью shebangs

Вы только сказали getopts, что -y имеет аргумент. Вы также пропустили "do" из команды "while".

Вам также больше не нужно проверять, что количество аргументов равно 3 - на самом деле, аргументов будет не 3, а 6. Но подсчет аргументов - это неправильный метод для использования с getopts. Вместо этого проверьте, что все ваши необходимые переменные имеют значение.

Try

#! /bin/sh

usage() {
    echo "Usage:"
    echo "       $0 -i rate -a amount -y period"
    exit 1
} 

i='' ; a='' ; y=''

while getopts i:a:y: name ; do
    case $name in
            i) i="$OPTARG" ;;
            a) a="$OPTARG" ;;
            y) y="$OPTARG" ;;
            *) usage ;;
    esac
done
shift $(( OPTIND - 1 ))

if [ -z "$i" ] || [ -z "$a" ] || [ -z "$y" ] ; then 
    usage
fi

# Compute the monthly payment
x=$(echo "scale=20;1+$i/200" | bc)
z=$(echo "scale=20;1/6" | bc)
x2z=$(echo "scale=20;e($z*l($x))" | bc -l)
y12=$(echo "scale=20;-$y*12" | bc)
x2z2y12=$(echo "scale=20;e($y12*l($x2z))" | bc -l)
p=$(echo "scale=3;$a*(($x2z-1))/(1-$x2z2y12)" | bc)

# Print the monthly payment
echo $p
exit 0
2
23.10.2018, 04:28
0 ответов

Теги

Похожие вопросы