第14回 数値の計算をしてみよう:$(( ))で四則演算を行う方法 | はじめてのシェルスクリプト

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第14回 数値の計算をしてみよう:$(( ))で四則演算を行う方法 | はじめてのシェルスクリプト
目次

はじめに

この連載では、macOS のターミナルで sh を使いながら、シェルスクリプトの基本を順番に学んでいきます。

これまでの回では、変数・条件分岐・ループ・関数といった、シェルスクリプトの基本構造を学んできました。これらを組み合わせることで、かなり柔軟な処理が書けるようになりましたね。

しかし、シェルスクリプトで数値を扱おうとしたとき、「なぜ count = count + 1 と書いても動かないのだろう?」と戸惑う人は多いです。シェルでは、変数の中身はすべて「文字列」として扱われるため、数値の計算には専用の書き方が必要です。

第14回では、$(( )) を使った数値の計算方法を学びます。足し算・引き算・掛け算・割り算といった四則演算の書き方を身につけると、カウンタ管理や計算結果を使った処理など、応用の幅がぐっと広がりますよ。

この回で学ぶこと

  • シェルでの数値の扱い
  • $(( )) の基本
  • 加算の方法
  • 減算の方法
  • 乗算と除算の基本
  • 計算結果を変数に入れる方法
  • 初学者がつまずきやすい書き方

シェルで数値を計算する

$(( )) を使う

シェルで数値の計算をするときは、$(( )) を使います。

たとえば、3 + 2 を計算するなら次のように書きます。

echo $((3 + 2))

実行結果は 5 になります。

計算結果は数値として扱われる

$(( )) の中では、加算、減算、乗算、除算などの計算ができます。

計算した結果をそのまま表示することも、変数に入れることもできます。

サンプルコード

calc_sample.sh に次の内容を保存します。

#!/bin/sh

a=10
b=3

echo "Add: $((a + b))"
echo "Sub: $((a - b))"
echo "Mul: $((a * b))"
echo "Div: $((a / b))"

実行手順

1. ファイルを作成して保存する

エディタで calc_sample.sh という名前のファイルを作成し、次の内容を保存します。

#!/bin/sh

a=10
b=3

echo "Add: $((a + b))"
echo "Sub: $((a - b))"
echo "Mul: $((a * b))"
echo "Div: $((a / b))"

2. スクリプトを実行する

次のコマンドを実行します。

sh calc_sample.sh

実行結果は次のようになります。

Add: 13
Sub: 7
Mul: 30
Div: 3

この例では、除算の結果は整数で表示されます。

3. 数値を変えて試す

ab の値を変更して、計算結果がどう変わるか確認してください。

コードの読み方

a=10b=3

計算に使う数値を変数へ入れています。

$((a + b))

これは加算です。

ab を足した結果を返します。

$((a - b))

これは減算です。

a から b を引いた結果を返します。

$((a * b))

これは乗算です。

ab を掛けた結果を返します。

$((a / b))

これは除算です。

整数同士の計算では、小数ではなく整数の結果になります。

計算結果を変数に入れる

計算結果は、次のように変数へ入れることもできます。

total=$((a + b))
echo "$total"

この場合、計算結果が total に入ります。

後から何度でも使えるので便利です。

初学者がつまずきやすい点

普通のかっこで計算しようとしてしまう

シェルでは、数値計算に $(( )) を使います。

通常の丸かっこだけでは計算になりません。

変数名の前に $ を書く場所が分からなくなる

$(( )) の中では、a + b のように書けます。

この形では、変数名の前に $ を付けなくても動きます。

除算で小数が出ると思ってしまう

整数同士の除算では、小数ではなく整数の結果になります。

よくあるエラー

計算結果が表示されない

$(( )) の形が正しいか確認してください。

echo $((a + b))

のように書きます。

変数に文字列が入っている

数値計算に使う変数には、数値を入れているか確認してください。

思った結果と違う

演算子や変数の値を確認してください。

特に除算は整数になることを意識して見直してください。

練習用コード

次の内容で math_practice.sh を作成して実行してみてください。

#!/bin/sh

x=8
y=2

sum=$((x + y))
diff=$((x - y))
product=$((x * y))
quotient=$((x / y))

echo "sum: $sum"
echo "diff: $diff"
echo "product: $product"
echo "quotient: $quotient"

xy の値を変えて、計算結果がどう変わるか確認してください。

この回で理解しておくこと

  • シェルの数値計算では $(( )) を使う
  • 加算、減算、乗算、除算を基本的に扱える
  • 計算結果をそのまま表示できる
  • 計算結果を変数へ入れて再利用できる
  • $(( )) の中では変数名をそのまま書ける
  • 整数同士の除算は整数の結果になる

まとめ

今回は、$(( )) を使って数値の計算を行う基本を確認しました。

計算を使えるようになると、カウンタ処理や条件分岐で数値を扱いやすくなります。

次回は、文字列操作の基本を学びます。

次回予告

次回は「文字列操作の基本を学ぼう」です。

文字列の長さや連結など、文字列を扱う基本を確認します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次