ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Bashで三項演算子ぽいもの

(2023-01-02 初稿)

Bashで if 文の書き方があまり好きではない。

具体的には、if   ; then と判定文とthenの間に、「;」(セミコロン)が入るのがどうも気にいらない。

できれば、rubypython等のように、print("true") if a=0等のように if 文を最後に書く書き方が好きだ。

で、調べてみると、bashでも三項演算子のように書くことができる。

具体的には、以下のスクリプト

$ a=1; [[ "$a" == 1 ]] && echo 'true' || echo 'false'
true
$ b="yes no"; [[ "$b" == "yes" ]] && echo 'ture' || echo 'false'
false

ずいぶんスッキリとして、可読性が増したような…

ただし、上記サイトにあるように、&&以降の文は必ず成功する文を書く必要があるそうなので、注意が必要。

さらに、数値の場合は、以下のように(())式を使ってかんたんに書くことができる。

$ a=1 ; echo $(( a == 1 ? -1 : 0 ))
-1

こちらも、シンプルで可読性が高いよね。

関連ページ