Unix / Linux - シェル内蔵数学関数

こんにちは、将来のプログラマーさんたち!今日は、Unix/Linuxのシェル内蔵数学関数の世界に興味深く飛び込んでみましょう。プログラミングが初めてでも心配しないでください。私は各ステップを明確な説明と豊富な例を用いてガイドします。さあ、BEGIN!

Unix / Linux - Builtin Functions

シェル内蔵関数とは?

数学関数に入る前に、シェル内蔵関数とは何かを理解しましょう。これらはシェル自体に組み込まれたコマンドで、別途インストールする必要はありません。常に手元にあり、さまざまなタスクを効率的に実行するのに役立ちます。

シェルスクリプトで数学関数を使う理由

「シェルスクリプトで数学が必要なの?」と思うかもしれません。考えてみてください。月間予算を計算するスクリプトやデータを分析するスクリプトを書いているときに、これらの関数が非常に便利になります。シェルスクリプト内で計算を行うことで、時間と労力を節約できます。

一般的なシェル内蔵数学関数

Unix/Linuxシェルで最も一般的に使用される数学関数を見てみましょう。ここでは、広く使用されているBashシェルを使用して例を示します。

1. 基本算術演算

Bashには基本算術演算を行う複数の方法があります。以下に見てみましょう。

a. exprコマンドの使用

#!/bin/bash
a=10
b=5
sum=$(expr $a + $b)
echo "The sum of $a and $b is: $sum"

このスクリプトは以下を出力します:The sum of 10 and 5 is: 15

ここで、exprは表現式 $a + $b を評価し、結果は sum 変数に格納されます。

b. 二重括弧 (( )) の使用

#!/bin/bash
a=10
b=5
((sum = a + b))
echo "The sum of $a and $b is: $sum"

この方法はより簡潔で、基本的な算術演算には好まれることが多いです。

2. より複雑な数学演算

より複雑な計算を行うには、Bashの bc コマンドを使用します。これは厳密には内蔵関数ではありませんが、一般的に利用可能で非常に便利です。

#!/bin/bash
pi=$(echo "scale=2; 22/7" | bc)
echo "The value of pi (to 2 decimal places) is: $pi"

出力:The value of pi (to 2 decimal places) is: 3.14

ここで、scale=2 は小数点以下の桁数を設定し、bc は除算を行います。

一般的な数学演算の一覧

以下は、Bashで行える数学演算の一覧です。

演算 符号
加算 + echo $((5 + 3))
減算 - echo $((10 - 4))
掛け算 * echo $((6 * 7))
除算 / echo $((20 / 5))
余り(モジュラス) % echo $((17 % 3))
繰り返し乗算 ** echo $((2 ** 3))

高度な数学関数

基本を理解したので、さらに高度な数学関数を見てみましょう。これらはBash自体に内蔵されていませんが、bc コマンドを通じて一般的に使用されます。

1. 平方根

#!/bin/bash
number=16
sqrt=$(echo "scale=2; sqrt($number)" | bc)
echo "The square root of $number is: $sqrt"

出力:The square root of 16 is: 4.00

2. 正弦と余弦

#!/bin/bash
angle=30
sin=$(echo "scale=4; s($angle * 3.14159 / 180)" | bc -l)
cos=$(echo "scale=4; c($angle * 3.14159 / 180)" | bc -l)
echo "The sine of $angle degrees is: $sin"
echo "The cosine of $angle degrees is: $cos"

出力:

The sine of 30 degrees is: .4999
The cosine of 30 degrees is: .8660

bcのコマンドに -l オプションを指定すると、三角関数のための数学ライブラリが読み込まれます。

実用的な例:温度変換器

新たに学んだ知識を実際に使って、温度変換器の例を見てみましょう!

#!/bin/bash

echo "Temperature Converter"
echo "1. Celsius to Fahrenheit"
echo "2. Fahrenheit to Celsius"
read -p "Enter your choice (1/2): " choice

case $choice in
1)
read -p "Enter temperature in Celsius: " celsius
fahrenheit=$(echo "scale=2; ($celsius * 9/5) + 32" | bc)
echo "$celsius°C is equal to $fahrenheit°F"
;;
2)
read -p "Enter temperature in Fahrenheit: " fahrenheit
celsius=$(echo "scale=2; ($fahrenheit - 32) * 5/9" | bc)
echo "$fahrenheit°F is equal to $celsius°C"
;;
*)
echo "Invalid choice"
;;
esac

このスクリプトは、実際のシナリオで数学関数を使用する方法を示しています。ユーザーが摂氏と華氏の温度を変換できるようにします。

結論

おめでとうございます!シェルスクリプティングと数学関数の世界に初めての一歩を踏み出しました。練習すれば完璧になります。これらの関数を使用して、自分自身でカalkルーターやデータ分析スクリプトを作成してみてください。

プログラミングの旅を続ける中で、これらの基本的な数学演算がより複雑な計算の基盤となります。探索を続け、学び続け、そして最も重要なのは、楽しむことです!

未来の技術の魔術師たち、ハッピーコーディング!??‍??‍?

Credits: Image by storyset