Bashスクリプト入門
Alex Scriven
Data Scientist
R や Python などの多くの REPL(コンソール)と異なり、シェルは数値をネイティブには扱いません
Python や R では次のようにできます:
>>> 1 + 4
5
期待どおりに返ってきます!
シェルは数値をネイティブには扱いません:
(ターミナルで)
1 + 4
bash: 1: command not found
expr は cat や grep と同様の便利なユーティリティです
これなら動きます(ターミナルで):
expr 1 + 4
5
良いですね!
expr は小数を扱えません:
(ターミナルで)
expr 1 + 2.5
expr: not a decimal number: '2.5'
ご安心ください(解決策があります)
bc(basic calculator)は便利なコマンドラインプログラムです。
ターミナルで起動して計算できます:

パイプで電卓を開かずに bc を使えます:
echo "5 + 7.5" | bc
12.5
bc には小数点以下の桁数を指定する scale 引数があります。
echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc
区切りに ; を使って“行”を分けています
3.333
数値変数も文字列変数と同様に代入できます:
dog_name='Roger' dog_age=6echo "My dog's name is $dog_name and he is $dog_age years old"
dog_age="6" でも動きますが、文字列になります!
My dog's name is Roger and he is 6 years old
数値用の、単一ブラケット表記の変種です:
expr 5 + 7
echo $((5 + 7))
12
12
この方法は bc ではなく expr を使う点に注意(小数不可)
前のレッスンでシェルを呼び出したのを覚えていますか?
数値変数でとても便利です:
model1=87.65 model2=89.20echo "The total score is $(echo "$model1 + $model2" | bc)"echo "The average score is $(echo "($model1 + $model2) / 2" | bc)"
The total score is 176.85
The average score is 88
Bashスクリプト入門