Bash の数値変数

Bashスクリプト入門

Alex Scriven

Data Scientist

他言語での数値

R や Python などの多くの REPL(コンソール)と異なり、シェルは数値をネイティブには扱いません

Python や R では次のようにできます:

>>> 1 + 4
5

期待どおりに返ってきます!

Bashスクリプト入門

シェルでの数値

 

シェルは数値をネイティブには扱いません:

(ターミナルで)

1 + 4
bash: 1: command not found
Bashスクリプト入門

expr の紹介

 

expr は cat や grep と同様の便利なユーティリティです

これなら動きます(ターミナルで):

expr 1 + 4
5

良いですね!

Bashスクリプト入門

expr の制限

expr は小数を扱えません:

(ターミナルで)

expr 1 + 2.5
expr: not a decimal number: '2.5'

ご安心ください(解決策があります)

Bashスクリプト入門

bc の紹介

bc(basic calculator)は便利なコマンドラインプログラムです。

ターミナルで起動して計算できます:

シェルでの BC の使用例

Bashスクリプト入門

bc への数値の渡し方

 

パイプで電卓を開かずに bc を使えます:

echo "5 + 7.5" | bc
12.5
Bashスクリプト入門

bc の scale 引数

bc には小数点以下の桁数を指定する scale 引数があります。

echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc

区切りに ; を使って“行”を分けています

3.333
Bashスクリプト入門

Bash スクリプトでの数値

数値変数も文字列変数と同様に代入できます:

dog_name='Roger'
dog_age=6

echo "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
Bashスクリプト入門

二重括弧表記

数値用の、単一ブラケット表記の変種です:

expr 5 + 7
echo $((5 + 7))
12
12

この方法は bc ではなく expr を使う点に注意(小数不可)

Bashスクリプト入門

シェルの中のシェル 再訪

前のレッスンでシェルを呼び出したのを覚えていますか?

数値変数でとても便利です:

model1=87.65
model2=89.20

echo "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スクリプト入門

練習してみましょう!

Bashスクリプト入門

Preparing Video For Download...