bashで演算を行う方法

bashで演算を行う方法

Posted at January 9,2014 1:23 AM
Tag:[bash]

bashで数値の足し算・引き算などの四則演算や、比較演算・論理演算などを行う方法を紹介します。

bashで演算を行う方法

このエントリーはビギナーの方向けの内容です。

1.問題点

次のような変数の足し算の結果を出力するスクリプト(test.sh)を作りました。

#!/bin/sh
 
foo=123
bar=456
hoge=$foo+$bar
echo $hoge

が、このスクリプトを実行すると次のような結果が出力されます。

[~]$ ./test.sh
123+456

次のように数値を直接計算する場合も同様の結果になります。

#!/bin/sh
 
hoge=123+456
echo $hoge

2.算術式展開を使って演算を行う

まず算術式展開「$(())」を使う例を紹介します。

1項のスクリプトについて、赤色の部分のように式全体を算術式展開で括ります。

#!/bin/sh
 
foo=123
bar=456
hoge=$(( $foo+$bar ))
echo $hoge

これで次のような結果が出力されます。

[~]$ ./test.sh
579

算術式展開(または算術展開)は、

$((算術式))

というフォーマットで記述し、カッコ内の算術式を評価してくれます。

具体的には、算術式に含まれる全てのトークンに対し、 パラメータ展開・文字列展開・コマンド置換・クォートの削除を行います(Man page of BASHより引用)。

次のような比較演算も可能です。

#!/bin/sh
 
hoge=$(( 123 < 456 ))
echo $hoge

この場合、「1」が出力されます。

[~]$ ./test.sh
1

「1」は比較の結果が真であることを示します。

3.exprコマンドで演算を行う

もうひとつはexprコマンドを使う方法です。

1項のスクリプトについて、赤色のようにexprコマンドの後方に式を記述し、全体をバッククォートで括ります。

#!/bin/sh
 
foo=123
bar=456
hoge=`expr $foo + $bar`
echo $hoge

これで2項と同様の結果が出力されます。

[~]$ ./test.sh
579

exprは、式を評価して結果を標準出力に書き出すコマンドです。

expr 式...

というフォーマットで記述します。

なお、正しく計算させるには演算子の左右に半角スペースが必要みたいです。

[~]$ expr 123 + 456
579

次のフォーマットでは「123+456」という結果を出力します。

[~]$ expr 123+456
123+456
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)