почти пятничное, бессмысленное и беспощадное

топ 100 блогов k001 — 10.03.2011 Зашёл тут разговор об использовании командной строки в качестве калькулятора. Я, например, привычно пользуюсь gcc:

$ gdb
GNU gdb (GDB) Fedora (7.2-46.fc14)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
.
(gdb) p 12*5
$1 = 60


Если арифметика целочисленная, то вполне подойдёт встроенная в шелл арифметика. Для обычного шелла это выглядит так:
$ let x=12*5; echo $x
60


А на баше можно скруглить углы:
$ echo $((12*5))
60


Можно, в общем-то, и на awk написать:
$ awk 'BEGIN {print 12*5}'
60


Конечно же, так же подойдёт любой скриптовый язык -- Perl, Python, похапэPHP, Ruby и так далее.

К примеру, вот вам Python:
$ python
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 12*5
60


Или проще:
$ echo 'print 12*5' | python -
60

А вот Perl, для данного случая -- никакой разницы, только Перл не добавляет перевод строки :)
$ echo 'print 12*5,"\n"' | perl -
60


А вот PHP, тоже надо добавлять перевод строки:
php -r 'print 12*5 ."\n";'
60


Пример на Ruby оставлю читателям в качестве домашнего задания.
$echo 'print 12*5,"\n"' | ruby
60


А вот особый шик -- на MySQL (полагаю, Postgres тоже вполне подойдёт). Только нужно, чтобы сервер был запущен. Клиент-серверный калькулятор, не хухры-мухры!

$ echo "SELECT 12*5;" | mysql
12*5
60


Ну и, конечно, никто не мешает нам взять и поступить как взрослые бородатые дядьки, а именно написать сразу на С, скомпилировать и запустить. Минимальный вариант примерно такой:
$ echo 'void main(void) {printf("%d\n", 12*5);}' > m.c
$ gcc m.c && ./a.out
m.c: In function ‘main’:
m.c:2:1: warning: incompatible implicit declaration of built-in function ‘printf’
60


Да, очень просится пример на постскрипте, и ведь в принципе несложно сделать, только для того, чтобы увидеть циферку, нужен принтер или просмотровщик PS файлов -- не очень практично. Да и не совсем это уже командная строка получается. Впрочем, я сделал пример на постскрипте, но показывать вам пока не буду.

Пишите в комментах ваши варианты использования командной строки в качестве калькулятора! Наверняка я многое пропустил!

Оставить комментарий

Архив записей в блогах:
Добрый вечер! Завтра вторник. Солнце в Близнецах, Луна и Марс во Льве. Период ретроградности Меркурия на этом витке не очень велик, недели три. В итоге получается, что планета чуть менее двух месяцев будет находиться в узких границах между 18-м и 26-м градусами Близнецов. И это ...
Пришло время признать - я человек скучный. Ни теперь, ни раньше не принадлежала к тем, кто зажигает. Не совершала прекрасных безумств, не танцевала под луной, не выходила на экзамены едва заглянув в учебник, не изменяла мужу, не залезала в долги, не играла в казино, не напивалась в ...
Эва только что потеряла мужа. По его страховке ей выплатят 50 000 и остаток своей жизни она проведет на эти деньги. Но ей выпадает шанс вновь вспомнить молодость - страховая компания по ошибке высылает ей чек на 5 млн. И она, не долго думая, мчится со своей лучшей подругой на Канары, ...
Большой Разговор вот-вот начнется! Присоединяйтесь, пообщаемся через мониторы! Что происходит, насколько близок мир, что принесет Хинштейн Курской области, сколько будет стоить ...
Покаб я это вот работал вот, и визу оформлял, вы вот это вот тут рубель грохнули. .............. Куповать на последние рублисы валюту или как? ...