Bashシェルスクリプトで数値の絶対値を算出する方法

Bash, Linux

はじめに

以前もエントリを書きましたが、簡単な計算であればBash上で計算できます。

整数のみの計算であれば、以下のように実現できます。

$ echo $((10/2))
5

今回は絶対値を計算する方法について考えてみます。

検証環境

x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

1.計算結果が正か負かの判定を行う方法

判定処理を行い大きい方から小さい方を引き算する方法です。

$ A=10
$ B=15

# 普通に計算するとマイナスになる
$ echo $((A-B))
-5

# 三項演算子を使って演算を反転してやる
$ echo $((A > B ? A - B : B - A))

2.マイナスを削り取る方法

単純に計算結果の先頭1文字が - だった場合には削り取ります。

# 普通に計算するとマイナスになる
$ echo $((A-B))
-5

# 先頭1文字が `-` であれば削り取る
$ echo $((A-B)) | sed 's/^-//'
5

変数に代入されていれば変数参照の構文として削り取ることもできます。

$ X=$((A-B))
$ echo ${X#-}
5

ひとこと

変数に代入されていれば、「マイナスを削り取る方法」がコード量は少なく楽ちんです。

Bash, Linux