Lから始まるLinux

2章52話
testコマンド
2章53話 AND演算子とOR演算子
もくじ
2章54話
正規表現
AND 演算子と OR 演算子
若木 みどり
お兄ちゃん! 今回は test 有効に使う方法を 教えてくれるんだよね?
若木 しげる
そうだよ! 今回は AND 演算子 && OR 演算子 || を学ぼう!
AND 演算子 &&
若木 しげる
まずは AND 演算子 && からだよ このように書くんだ
コマンド1 && コマンド2
若木 しげる
これはコマンド1 が成功したらコマンド2 を実行する」という意味になるよ
若木 みどり
へー!コマンド1まさに前回のtest が使えるね!
若木 しげる
そのとおり!nproc を使って数値の大小で処理を分けてみよう!
nproc
若木 みどり
nproc は CPU のコア数を表示してくれるんだったよね!
若木 みどり
実行結果はこうだったよ
4
若木 しげる
それでは AND 演算子を使った例を見てみよう
[ "$(nproc)" -ge 4 ] && echo "この Linux システムはすごい! CPU のコアが $(nproc) 個もあるよ!"
若木 みどり
ええっと…$(nproc)CPU のコア数に置き換わるんだよねそれが4以上だったら成功になるのかな?
若木 しげる
そうそうその解釈で合っているよそれが成功を返したら次の echo ...実行されるんだ
若木 みどり
じゃあ実行してみるね!
この Linux システムはすごい! CPU のコアが 4 個もあるよ!
若木 みどり(驚き)
おお!期待どおりに動いたね!しかもコマンド展開のおかげでコア数も自動で挿入されるんだね!
若木 しげる(笑顔)
いい感じだね!
OR 演算子 ||
若木 しげる
次は OR 演算子 || だねこれはこのように書くよ
コマンド1 || コマンド2
若木 しげる
これはコマンド1 が失敗したらコマンド2 を実行する」という意味になるよ
若木 みどり
AND 演算子 && の逆だね!
若木 しげる
早速 OR 演算子を試してみよう!
[ "$(nproc)" -ge 4 ] || echo "この Linux システムは頑張り屋! $(nproc) 個のコアを上手く使い回しているよ!"
若木 みどり
じゃあ実行するね!
若木 みどり(驚き)
…あれ?今度は何も表示されないね?
若木 しげる
[ $(nproc) -ge 4 ]成功したからだねこの場合 ||後ろのコマンドは実行されないんだ
AND 演算子と OR 演算子の組み合わせ
若木 みどり
うーん…何も表示されないのはちょっとさみしいな…
若木 しげる
&&||組み合わせられるんだ以下のように書くよ!
コマンド1 && コマンド2 || コマンド3
若木 しげる
このようにするとコマンド1 が成功したら コマンド2コマンド1 が失敗したら コマンド3実行してくれるんだ
若木 みどり
コマンド1成功でも失敗でもなんらかのコマンドが実行されるんだね
若木 しげる
それでは CPU のコア数がどんな場合でもメッセージを表示するようにしてみよう!
[ "$(nproc)" -ge 8 ] \
  && echo "この Linux システムはすごい! CPU のコアが $(nproc) 個もあるよ!" \
  || echo "この Linux システムは頑張り屋! $(nproc) 個のコアを上手く使い回しているよ!"
若木 しげる
今度は条件が失敗するように比較する数字を4 から 8 に増やしたよ
若木 みどり
長くなるから「バックスラッシュ(\)」コマンドラインを分けて見やすくしているんだね!
若木 しげる
そういうことだねでは実行してみようか
この Linux システムは頑張り屋!4 個のコアを上手く使い回しているよ!
若木 みどり
おお!今度は OR 演算子の方のメッセージが表示されたね!
まとめ
若木 みどり
今回は AND 演算子 &&OR 演算子 || を学んだよ!これで条件によって処理を分けることができるんだまた &&|| を組み合わせられよ最終的に必ずどちらかの処理が実行されるんだ!
若木 しげる
これらを使えば状況によって処理を柔軟に分けることができるよ