GMTのスクリプトを書くときに役に立つ(かもしれない)bashの小技を備忘録として書き留めていきます.

引数を実数値として計算処理する

例えば,x軸の描画範囲をxminとxmaxとして引数$1と$2から読み込み,その真ん中の位置に文字を入れたいとき,x50=(xmin+xmax)×0.5が必要になります.これは次の様に計算式をbcコマンドにパイプして実現できます.

xmin=$1; ymin=$2   # 引数の読み込み このときxminとxmaxは文字列であることに注意
x50=`echo "($xmin +$xmax) * 0.5" | bc`             # ちょうど真ん中50%の位置
x10=`echo "($xmin + ($xmax - $xmin) * 0.1" | mc`   # 10%の位置

引数を整数として計算処理する

上と似ていますが実数ではなく整数の場合です.exprコマンドを使います.かけ算の*だけはエスケープする必要があります.

a=1; b=2
c="$(expr $a + $b)"    #=> c=3
d="$(expr $a '*' $b)"  #=> d=2