Калькулятор в консоли

Для питонщика-линуксоида, подумал я однажды, использовать гуёвый калькулятор ради нескольких арифметических действий — не комильфо. Тогда полчаса скриптования привели вот к такой конструкции в .bashrc

=() {
    if calc=`python3 -c "from math import *; print(${@//x/*})" 2>/dev/null`
    then
        echo $calc
    else
        echo Error >&2
    fi
}

И voilà, вся мощь пайтона на кончиках пальцев! 🙂

$ = 9 / 98
0.09183673469387756
$ = pi
3.141592653589793
$ = 'sin(2 x pi)'
-2.4492935982947064e-16
$ = 2 xx 64
18446744073709551616
$ = 2 xx 32
4294967296

Жаль, только, что шелл трактует на свой лад скобки и звёздочки. Вопрос со звёздочками решился конструкцией ${@//x/*} (вместо них для умножения теперь используется икс), а вот выражения со скобками приходится брать в кавычки.

Заморочку с ветвлением добавил для того, чтобы в случае ошибки не вываливать весь вывод питоновского трассировщика, а показать скромное error.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

fifty three − = fifty