124

ラボ実験への入力を提供するためにシリアル端末を使用しています。私はそれを使用して見つけました

$ echo "5X5"

の文字列を返すだけです"5X5"。乗算演算を実行するコマンドはありますか?

4

8 に答える 8

225

はい、bashに組み込まれている算術拡張$(( ))を使用して簡単な計算を行うことができます

$ echo "$((5 * 5))"
25

演算子の完全なリストについては、Bashリファレンスマニュアルのシェル演算のセクションを確認してください。

完全を期すために、他の人が指摘しているように、任意精度が必要な場合、bcまたはそれdcよりも優れている場合。

于 2012-06-14T19:20:09.440 に答える
48

より高度で正確な計算については、bc(1)の使用を検討してください。

echo "3 * 2.19" | bc -l 
6.57
于 2012-06-14T19:21:43.860 に答える
20

内部メソッド

Bashは、による算術展開をサポートしてい$(( expression ))ます。例えば:

$ echo $(( 5 * 5 ))
25

外部メソッド

bcexprなど、多くのユーティリティが算術演算を提供します。

$ echo '5 * 5' | /usr/bin/bc
25

$ /usr/bin/expr 5 \* 5
25
于 2012-06-14T19:30:27.610 に答える
17

古典的な解決策は次のとおりです。

 expr 5 \* 5

expr整数オペランドでのみ機能します。もう1つの優れたオプションは次のとおりです。

 echo 5 5\*p | dc

dc整数以外のオペランドで動作するようにすることができます。

于 2012-06-14T19:24:38.237 に答える
8

単純なシェル関数(sedは不要)は、「5X5」を解釈するトリックを実行する必要があります

$ function calc { bc -l <<< ${@//[xX]/*}; };
$ calc 5X5
25
$ calc 5x5
25
$ calc '5*5'
25
于 2012-08-15T19:35:20.677 に答える
7

bc浮動小数点計算を使用してサポートするこの関数を使用します。

c () { 
    local a
    (( $# > 0 )) && a="$@" || read -r -p "calc: " a
    bc -l <<< "$a"
}

例:

$ c '5*5'
25
$ c 5/5
1.00000000000000000000
$ c 3.4/7.9
.43037974683544303797

Bashの算術展開はfloatをサポートしていません(ただし、Kornシェルとzshはサポートしています)。

例:

$ ksh -c 'echo "$((3.0 / 4))"'
0.75
于 2012-06-14T20:54:21.883 に答える
4

これに使用する簡単なスクリプトがあります。

me@mycomputer:~$ cat /usr/local/bin/c

#!/bin/sh

echo "$*" | sed 's/x/\*/g' | bc -l

シェルの特殊文字であるxため*、に変わります。*次のように使用します。

  • c 5x5
  • c 5-4.2 + 1
  • c '(5 + 5) * 30'(式に括弧が含まれている場合でも、引用符を使用する必要があります)。
于 2012-06-14T19:29:55.883 に答える
3

Pythonが好きで、パッケージをインストールするオプションがある場合は、私が作成したこのユーティリティを使用できます。

# install pythonp
python -m pip install pythonp

pythonp "5*5"
25

pythonp "1 / (1+math.exp(0.5))"
0.3775406687981454

# define a custom function and pass it to another higher-order function
pythonp "n=10;functools.reduce(lambda x,y:x*y, range(1,n+1))"     
3628800
于 2019-01-05T17:38:24.480 に答える