Shell における算術演算

ShellBeginner
オンラインで実践に進む

はじめに

この実験では、Shell プログラミングにおける基本的な算術演算(計算)の方法を学びます。フルーツバスケットの合計金額を計算するシンプルなスクリプトを作成しながら、Bash における変数の使い方や算術式の扱い方をマスターしましょう。この実験は初心者向けに設計されているため、各ステップを詳しく解説していきます。

これはガイド付きの実験(Guided Lab)であり、学習と実践を助けるためのステップバイステップの指示が提供されます。指示に従って各ステップを完了し、実戦的な経験を積んでください。これまでのデータによると、この実験は初級レベルで、完了率は 96% です。また、学習者から 100% の高評価を得ています。

新しい Bash スクリプトの作成

まずは、新しい Bash スクリプトファイルを作成することから始めましょう。

  1. WebIDE のターミナルを開きます。labex@ubuntu:~/project$ のようなコマンドプロンプトが表示されているはずです。

  2. スクリプトは project ディレクトリ内に作成します。デフォルトでこのディレクトリにいるはずですが、念のため cd コマンドで移動しておきましょう。

    cd ~/project

    このコマンドは、現在のディレクトリを /home/labex/project に変更します。

  3. 次に、fruit_basket.sh という名前の新しいファイルを作成します。空のファイルを作成するには touch コマンドを使用します。

    touch fruit_basket.sh
  4. WebIDE エディタで fruit_basket.sh ファイルを開きます。WebIDE の左側にあるファイルエクスプローラーでファイル名をクリックすると開けます。

  5. すべての Bash スクリプトは「シバン(shebang)」行から始める必要があります。この行は、スクリプトを実行するためにどのインタープリタを使用するかをシステムに伝えます。ファイルの先頭に以下の行を追加してください。

    #!/bin/bash

    この行は、このスクリプトを Bash インタープリタで実行することを指定しています。

フルーツの価格を変数で定義する

スクリプトファイルが用意できたので、次に各フルーツとバスケットの価格を保存するための変数を定義しましょう。

fruit_basket.sh ファイルに以下の行を追加してください。

#!/bin/bash

## 価格の定義
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

内容を詳しく見ていきましょう。

  • Bash では、変数を使用する前に宣言する必要はありません。変数名に値を代入するだけで使えます。
  • 変数名は、大文字と小文字を区別します。慣習として、定数(値が変わらないもの)には大文字がよく使われます。
  • 値を代入する際、= 記号の前後にスペースを入れてはいけません
  • これらの値は「セント」単位の価格を表しています。例えば、COST_PINEAPPLE=50 はパイナップル 1 個が 50 セントであることを意味します。
  • データ型を指定する必要はありません。Bash はこれらをデフォルトで文字列として扱いますが、算術演算を行う際には数値として処理してくれます。

合計金額の計算

価格が定義できたので、パイナップル 1 個、バナナ 2 本、スイカ 3 個が入ったフルーツバスケットの合計金額を計算してみましょう。

fruit_basket.sh ファイルに以下の行を追加します。

#!/bin/bash

## 価格の定義
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

## 合計金額の計算
TOTAL=$((COST_PINEAPPLE + (COST_BANANA * 2) + (COST_WATERMELON * 3) + COST_BASKET))

この新しい行を詳しく見てみましょう。

  • $(( )) は、Bash における算術演算の構文です。この二重括弧の中にあるものはすべて算術式として扱われます。
  • 算術式の中では、変数名の前に $ を付ける必要はありません。
  • ここでは以下の計算を行っています:
    • COST_PINEAPPLE: パイナップル 1 個の価格
    • (COST_BANANA * 2): バナナ 2 本の価格
    • (COST_WATERMELON * 3): スイカ 3 個の価格
    • COST_BASKET: バスケット自体の価格
  • これらの値がすべて加算され、その結果が TOTAL 変数に格納されます。

注意:Bash は整数演算のみをサポートしています。ドルとセントのような浮動小数点(小数)を含む計算が必要な場合は、bc のような外部ツールを使用する必要があります。

合計金額の表示

計算結果を確認するために、合計金額を出力する必要があります。fruit_basket.sh ファイルに以下の行を追加してください。

#!/bin/bash

## 価格の定義
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

## 合計金額の計算
TOTAL=$((COST_PINEAPPLE + (COST_BANANA * 2) + (COST_WATERMELON * 3) + COST_BASKET))

## 合計金額の表示
echo "Total Cost is $TOTAL cents"

この新しい行の解説です。

  • echo は、ターミナルにテキストを表示するためのコマンドです。
  • 引用符(" ")で囲まれたテキストはそのまま表示されますが、$TOTAL の部分は例外です。
  • 文字列内で変数名の前に $ を付けると、Bash はそれを変数の値に置き換えます。これを「変数展開(variable expansion)」と呼びます。
  • したがって、TOTAL が 128 であれば、出力は "Total Cost is 128 cents" となります。

スクリプトに実行権限を与えて実行する

スクリプトが完成したので、実行できるように権限を設定してから動かしてみましょう。

  1. ターミナルで、chmod コマンドを使ってスクリプトを実行可能にします。

    chmod +x ~/project/fruit_basket.sh

    このコマンドはファイルのモードを変更し、ユーザーに実行(x)権限を追加します。

  2. それでは、スクリプトを実行しましょう。

    ~/project/fruit_basket.sh

    このコマンドは Bash にスクリプトを実行するよう指示します。~/project/ の部分はスクリプトへのパス(場所)を指定しています。

以下のような出力が表示されるはずです。

Total Cost is 128 cents

この出力は、フルーツバスケット(パイナップル 1 個、バナナ 2 本、スイカ 3 個、およびバスケット)の合計金額が 128 セントであることを示しています。

まとめ

この実験では、Shell プログラミングにおける基本的な演算子を使った算術演算の方法を学びました。個別の価格を変数として定義し、算術式を使って合計を算出する Bash スクリプトを作成しました。また、スクリプトを実行可能にする方法や、コマンドラインから実行する方法についても習得しました。

覚えておくべき重要なポイント:

  1. Bash スクリプトはシバン行(#!/bin/bash)で始める。
  2. Bash の変数は、= の前後にスペースを入れずに代入する。
  3. 算術演算は $(( )) の中で行う。
  4. echo コマンドは結果を出力するために使用する。
  5. スクリプトを実行する前には、chmod +x で実行権限を付与する必要がある。

これらのスキルは、より複雑なシェルスクリプトを作成するための基礎となり、スクリプト内で計算が必要なあらゆる場面で応用できます。