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
Posted by yujiro このページの先頭に戻る
- シェルスクリプトのexpectで応答メッセージを振り分ける方法
- bashでPostgreSQLのselect結果を出力する方法
- bashでbackspaceが動作しない場合の対処
- bashの変数から最後の1文字を取得・削除する方法
- bashのwhile文で利用した変数がループ外で反映されない場合の対処
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処
- bashの正規表現でスペース(空白)を判定する方法
- bashで文字列の長さを調べる方法
- bashで数値を判定する方法
- bashで小数点を比較する方法
- bashの配列をjoinする方法
- bashのif文で正規表現を使用する方法
- Bashで変数を大文字または小文字に変換する方法
- bashの変数をsplitして配列を作る方法
- シェルスクリプトでtelnet接続する方法
トラックバックURL
コメントする
greeting