Я использую последовательный терминал для ввода данных в наш лабораторный эксперимент. Я обнаружил, что используя
$ echo "5X5"
просто возвращает строку "5X5"
. Есть ли команда для выполнения операции умножения?
источник
Я использую последовательный терминал для ввода данных в наш лабораторный эксперимент. Я обнаружил, что используя
$ echo "5X5"
просто возвращает строку "5X5"
. Есть ли команда для выполнения операции умножения?
Да, вы можете использовать встроенное арифметическое расширение bash$(( ))
для выполнения простых математических операций.
$ echo "$((5 * 5))"
25
Проверьте раздел Shell Арифметического в Bash Reference Manual для полного списка операторов.
Для полноты, как указывали другие, если вам нужна произвольная точность, bc
или dc
было бы лучше.
Для более продвинутой и точной математики рассмотрите возможность использования bc (1).
echo "3 * 2.19" | bc -l
6.57
Bash поддерживает арифметическое расширение с помощью $(( expression ))
. Например:
$ echo $(( 5 * 5 ))
25
Ряд утилит предоставляют арифметические операции, включая bc и expr .
$ echo '5 * 5' | /usr/bin/bc
25
$ /usr/bin/expr 5 \* 5
25
Классическое решение:
expr 5 \* 5
Еще один приятный вариант:
echo 5 5\*p | dc
Оба эти решения будут работать только с целочисленными операндами.
dc
работает с поплавками. Попробуйecho '4 k 50 7 / p' | dc
. Выход есть7.1428
. Командаk
устанавливает точность.k
. Я точно помню точность по умолчанию, равную 0 (усечение до целого числа). Я плохо помню, или просто новые реализации изменили поведение?dc
редко, так как я больше разбираюсь в алгебре и меньше RPN, поэтому я не помню. В системе GNU, которую я использую, значение по умолчанию - 0. Старая (1993 г.) FreeBSDman
странице упоминается, что значение по умолчанию равно нулю, а на старыхman
страницах BSD нет.echo '4 k 50.5 7 / p' | dc
работает (вывод:)7.2142
.Простая функция оболочки (не требуется sed) должна выполнять трюк с интерпретацией '5X5'
источник
Я использую эту функцию, которая использует
bc
и поддерживает вычисления с плавающей запятой:Пример:
Арифметическое расширение Bash не поддерживает числа с плавающей запятой (но оболочка Korn и zsh поддерживают).
Пример:
источник
У меня есть простой скрипт, который я использую для этого:
me@mycomputer:~$ cat /usr/local/bin/c
Он изменяется
x
на,*
поскольку*
это специальный символ в оболочке. Используйте его следующим образом:c 5x5
c 5-4.2 + 1
c '(5 + 5) * 30'
(вам все равно придется использовать кавычки, если выражение содержит скобки).источник
tr
может использоваться для отображения нескольких символов.Если вам нравится Python и у вас есть возможность установить пакет, вы можете использовать эту созданную мной утилиту .
источник