お兄ちゃん!
思いつく動作の数だけ
コマンドがあるみたいだよ!
今回はどんなコマンドを
扱ってくれるんだろう?
今回は数学に関する
コマンドを紹介するよ!
seq
コマンドseq
は
seq 終了値
seq 開始値 終了値
seq 開始値 増分 終了値
1
となるんだ以下を実行してみようseq 5
どんな結果になるのかな?
1
2
3
4
5
1
から始まり、1
ずつ増えながら、5
で終わる」factor
コマンドfactor
は素因数分解をするよfactor [整数]...
素因数分解って…どんな計算だったっけ?
これは実行して見てみるのが早いと思うよ
factor 60
どれどれ?
60: 2 2 3 5
なるほど!「60 = 2 × 2 × 3 × 5」のような 分解をしてくれるんだね!
でも素因数を扱うことはめったにないような気がするなぁ
素数はどうだろう?素数は素因数分解できないことを利用すれば
factor
から素数を調べられるんだ以下のコマンドは
1
から 20
の間にある素数をseq
のように列挙するよ!factor {1..20} | awk -F':? +' 'NF == 2 { print $1 }'
awk
の NF
はへぇ…実行してみるね!
2
3
5
7
11
13
17
19
expr
コマンドexpr
は指定された表現を解釈してくれるんだ整数演算などで使われるよexpr 表現
以下を実行してみよう!
expr 1 + 1
これは予想しやすいね!
2
になるんでしょ?2
正解!「アスタリスク( は「乗算」だけど シェルでは「ワイルドカード」なんだ このようなシェルで意味を持つ記号はクォートしてあげよう
expr
には注意があるよ式で*
)」これって算術式展開
$(( ... ))
の方が楽じゃないのかな?良い所に気が付いたね!算術式展開が登場するまでは
expr
が使われていたんだ今でも移植性を考慮したスクリプトなどで使われることがあるよまた
表現
が正しく評価できなければ失敗を返すんだこのことを利用して整数の判定ができるよTEXT=abc
expr "$TEXT" + 1 > /dev/null 2>&1 \
&& echo "$TEXT は整数です" \
|| echo "$TEXT は整数ではありません"
なるほど!
TEXT
変数の値が整数じゃなかったら演算できなくて失敗を返すんだね!bc
コマンドbc
は計算機なんだ小数演算などで使われるよbc [オプション]... [ファイル]...
さっそく実行してみよう!
bc <<< '1.1 + 1.2'
ええっと…答えは
2.3
かな?2.3
正解!
これも算術式展開
$(( ... ))
で…って聞くのは野暮かな?現在では小数の計算も算術式展開を使うことが多いよ
expr
の小数バージョンのような使われ方をするのも同じだねbc
自体がスクリプト言語でプログラムのように数式を書けるんだ複雑な計算式をテキストに記述してbc
に計算させるという使い方もされるよ以下は
bc
で半径2の円の面積を求めるよbc << \EOF
pi=3.14
r=2
r*r*pi
EOF
bc
の書き方を知らなくてもどんな計算を行っているか見ればだいたい伝わる内容だね!12.56
今回は数学に関するコマンド
seq
, factor
, expr
, bc
を学んだよ!用途はアイデア次第だよ!