はじめに
先日他人の書いたシェルスクリプトを読んでいるときに、シェルでの数値計算の省略表記方法について初めて調べたので、その方法について記載します。
シェルの実行結果について
シェル内の数字は全て文字列扱いになるため、普通に書こうとすると文字列として実行されてしまいます。
$ echo 1+3
1+3
$ echo 1 + 3
1 + 3
$ echo 3/1
3/1
1. expr
コマンドを使う
linux 数値計算
で調べて一番上に出てきたコマンドです。
expr 数値 演算子 数値
の様な使い方をします。なお小数の計算はできないため、その場合は別のコマンド(bc
)を使うそうです。
こちらは本題ではないので、簡単に例をいくつか書きます。
# 演算子は離して書く
$ expr 1 + 3
4
$ expr 1 / 3
0
$ expr 6 / 2
3
exprコマンドは他にも使い道がありますが、簡単な計算だけなら2の方法が簡単かと思います。
2. $((f))
を使う
文字にするとよく分からないので、実際の例を書いてみます。
$ echo $((1+3))
4
$ echo $((1 + 3))
4
シェルの組み込み機能で、このような構文が使えるそうです。
$(コマンド)
でコマンドの結果を出力するのはよく使いますが、(1+3)というコマンドがあるわけではないので、初めて見たとき混乱しました。
# コマンドを出す例
$ echo $(pwd)
/Users/wkani
ちなみに$(())
の表記方法でlinuxコマンドを入れて見た場合は、エラーにならず0が帰ってきました。
使う機会はないと思います。
$ echo $((pwd))
0
$ echo $((ls))
0