(2023-01-02 初稿)
Bashで if 文の書き方があまり好きではない。
具体的には、if ; then と判定文とthenの間に、「;」(セミコロン)が入るのがどうも気にいらない。
できれば、ruby や python等のように、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
こちらも、シンプルで可読性が高いよね。
関連ページ