#! /usr/bin/env bash # Решение заданий из методички "Гаспар Чилингаров. UNIX – учебное пособие". # 1. Напишите программу-калькулятор, которая будет иметь один регистр аккумулятор. # Значение, которым инициализируется аккумулятор, задается пользователем. # После того, как программа инициализирует аккумулятор, она должна выполнять следующие команды: # + число – прибавить число к аккумулятору # - число – вычесть число из аккумулятору # * число – умножить число и аккумулятору # / число – разделить аккумулятор на число # q – выход из программы # После каждой команды скрипт должен выводить значение регистра-аккумулятора. # 2. Измените скрипт, что-бы он проверял бы операции деления на ноль, наличие аргумента у операции, # проверял бы, что введенный аргумент является числом, а не произвольной строкой. # Для реализации используйте команду case. re="^[+-]?[0-9]+$" # integers read -e -p "Input: " val while true do read -e -p "Op: " op arg #op=${command:0:1} #arg=${command:1} if [ "$op" = "q" ] ; then break fi if ! [[ $arg =~ $re ]] ; then echo "error: arg is not an integer" continue fi case $op in "+") let val+=arg ;; "-") let val-=arg ;; "*") let val*=arg ;; "/") if [ $arg -eq 0 ] then echo Cannot divide by zero else let val/=arg fi ;; *) echo Unknown operation ;; esac echo $val done