Linuxのコマンドラインによる数学的操作の詳細な例

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

序文

Linuxシステムで数学的操作を行うためのいくつかの面白いコマンドexpr、factor、jot、およびbcコマンドがあります。

Linuxのコマンドラインで数学演算を行うことはできますか? もちろん! 実際に、これらのことを簡単に実行できるコマンドがいくつかありますが、そのうちのいくつかはあなたを驚かせることさえあります。 これらの便利な数学コマンドやコマンド構文を学びましょう。

Expr

まず第一に、コマンドラインでの数学的な操作のために、最も一般的に使用されるコマンドがexpr(式の式)であると考えるのが最も簡単でしょう。これは4つの算術演算を行うことができ、サイズの比較にも使用できます。

可変増分


$ count=0
$ count=`expr $count + 1`
$ echo $count
1

シンプルな操作を完了


$ expr 11 + 123
134
$ expr 134 / 11
12
$ expr 134 - 11
123
$ expr 11 * 123
expr: syntax error <== oops!
$ expr 11 \* 123
1353
$ expr 20 % 3
2

構文エラーを避けるために、*演算子の前に\記号を追加する必要があることに注意してください。 %演算子は、余りの演算に使用されます。

これはやや複雑な例です:


participants=11
total=156
share=`expr $total / $participants`
remaining=`expr $total - $participants \* $share`
echo $share
14
echo $remaining
2

あるイベントに11人の参加者があり、授与される賞の総数が156であるとします。各参加者は14の賞と残りの2つの賞を獲得します。

比較

比較を見てみましょう。 最初の印象から、このステートメントはちょっと変わったように見えるかもしれません;ここでは数値ではなく数値による比較です。 この場合、exprは、式が真であるかどうかを判定します。結果が1の場合は真、そうでない場合は偽です。


$ expr 11 = 11
1
$ expr 11 = 12
0

「11と等しいですか?」と「11は12と等しいです」とお読みください。すぐにこの方法に慣れます。 もちろん、上記の比較はコマンドラインでは行いません。比較可能なのは、$ ageが11かどうかです。


$ age=11
$ expr $age = 11
1

引用符の中央に数字を置くと、数値比較ではなく文字列比較が行われます。


$ expr "11" = "11"
1
$ expr "eleven" = "11"
0

この場合、10が5より大きく、99より大きいかどうかを判断します。


$ expr 10 \> 5
1
$ expr 10 \> 99
0

実際には、それぞれ1と0を返すということは、比較の結果が真で偽であることを意味し、Linuxではこの結果が一般的に予想されます。 次の例では、上記のロジックに従ってexprを使用することは正しくありません。ifが正反対に動作する、つまり0が真を意味するためです。


#!/bin/bash
echo -n "Cost to us> "
read cost
echo -n "Price we're asking> "
read price
if [ `expr $price \> $cost` ]; then
echo "We make money"
else
echo "Don't sell it"
fi

以下、このスクリプトを実行します。


$ ./checkPrice
Cost to us> 11.50
Price we're asking> 6
We make money

これは明らかに私たちの期待に沿ったものではありません! 期待どおりに動作させるために少し変更しました。


#!/bin/bash
echo -n "Cost to us> "
read cost
echo -n "Price we're asking> "
read price
if [ `expr $price \> $cost` == 1 ]; then
echo "We make money"
else
echo "Don't sell it"
fi

ファクター

factorコマンドの機能は、基本的に期待通りです。 あなたは、対応する番号の要素を与える番号を与えます。


$ factor 111
111: 3 37
$ factor 134
134: 2 67
$ factor 17894
17894: 2 23 389
$ factor 1987
1987: 1987

注: factorコマンドは、1987が素数であるため、最後の数値にはそれ以上の要因を返しません。

ジョット

jotコマンドは一連の番号を作成できます。 総数と開始数を入力してください。


$ jot 8 10
10
11
12
13
14
15
16
17

jotを次のように使用することもできます。ここでは番号2まで減らしてください。


$ jot 8 10 2
10
9
8
7
5
4
3
2

Jotは、他のタスクに使用できる数値のリストを作成するのに役立ちます。


$ for i in `jot 7 17`; do echo April $i; done
April 17
April 18
April 19
April 20
April 21
April 22
April 23

Bc

Bcは、基本的には、コマンドライン演算のための最良のツールの1つです。 実行する操作を入力し、パイプを使用してコマンドに送信します。


$ echo "123.4+5/6-(7.89*1.234)" | bc
113.664

bcは精度を無視しないことがわかります。入力文字列はかなり単純です。 サイズの比較、ブール値の処理、平方根の計算、正弦、余弦、正接の計算もできます。


$ echo "sqrt(256)" | bc
16
$ echo "s(90)" | bc -l
.89399666360055789051

実際、BCはpiを計算することさえできます。 必要な精度を指定する必要があります。


$ echo "scale=5; 4*a(1)" | bc -l
3.14156
$ echo "scale=10; 4*a(1)" | bc -l
3.1415926532
$ echo "scale=20; 4*a(1)" | bc -l
3.14159265358979323844
$ echo "scale=40; 4*a(1)" | bc -l
3.1415926535897932384626433832795028841968

パイプラインを通じてデータを受信して​​結果を返すだけでなく、bcをインタラクティブに実行して、実行する操作を入力することもできます。 この例に記載されているスケール設定では、有効桁数を指定できます。


$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=2
3/4
.75
2/3
.66
quit

bcを使用して16進変換を完了することもできます。 Obaseは、出力の数値16進数を設定するために使用されます。


$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
obase=16
16  <=== entered
10  <=== response
256  <=== entered
100  <=== response
quit

bcを次のように使用することも、16進数と10進数の変換を完了する最も簡単な方法の1つです。


$ echo "ibase=16; F2" | bc
242
$ echo "obase=16; 242" | bc
F2

上記の最初の例では、入力16進(ibase)を16進(16進)に設定し、16進から10進への変換を完了しました。 2番目の例では、出力の16進数(obase)を16進数に設定する逆の操作を実行します。

簡単なbash演算

二重括弧を使うことで、簡単な数学演算をbashで行うことができます。 次の例では、変数を作成し、その変数に値を代入し、次に加算、減算、および2乗を順番に実行します。


$ ((e=11))
$ (( e = e + 7 ))
$ echo $e
18
$ ((e-))
$ echo $e
17
$ ((e=e**2))
$ echo $e
289

許可される演算子は次のとおりです。

+ – 加減算
++ – 自己増加と自己還元
* /%乗算、除算、および剰余
^索引操作

論理演算子とブール演算子を使用することもできます。


$ ((x=11)); ((y=7))
$ if (( x > y )); then
> echo "x > y"
> fi
x > y
$ ((x=11)); ((y=7)); ((z=3))
$ if (( x > y )) >> (( y > z )); then
> echo "letters roll downhill"
> fi
letters roll downhill

または次のように:


$ if [ x > y ] << [ y > z ]; then echo "letters roll downhill"; fi
letters roll downhill

下の2の3乗を計算します:


$ echo "2 ^ 3"
2 ^ 3
$ echo "2 ^ 3" | bc
8

要約

Linuxシステムでは、数値操作を行うことができる多くの異なるコマンドラインツールがあります。 この記事を読んだ後で、1つか2つの新しいツールをマスターできることを願っています。

上記の内容はすべてこの記事の内容ですが、この記事の内容はすべての学習や仕事に参考となる価値があることを願っています。ご不明な点がありましたらメッセージを残して、


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ