bash でも三項演算子を使いたい
かんたんな、初期値nullチェックとかで三項演算子的なことをよくやります。
bash でもやりたいなと思って調べててみたけど、なかった(あったので追記書きます。)。
条件分岐を使って原始的な手法がsh/bash で使えるのでご紹介。
三項演算子の変わりの原始的手法
[[ $var == abc ]] && echo OK || echo NG
サンプル
#!/bin/bash ## 変数 a=1 echo TRUE になる場合 [[ $a == 1 ]] && echo TRUE || echo FALSE echo FALSE が実行される場合 [[ $a == 0 ]] && echo TRUE || echo FALSE
三項演算子はbash に存在しない
将来のアップデートでbash には搭載されるかもしれないけど、sh には永遠に搭載されないだろし
条件判定を組み合わせて三項演算子っぽく記述できる方法は便利だし採用していきたい。
三項演算子の書き方(追記
三項演算子はsh にはなくbash 独自の機能 (( ))
を使えば、書くことが出来ました。
a=1 b=$(( a !=0 ? -1 : 0 ))
ちなみに、(( ))
のArithmetic expressions を書くときは、変数に$を付けない。
実際に動かしてみた例はこちら。
takuya@~$ unset a b takuya@~$ a=1 takuya@~$ b=$(( a !=0 ? -1 : 0 )) takuya@~$ echo $b -1 takuya@~$ takuya@~$ unset a b takuya@~$ a=0 takuya@~$ b=$(( a !=0 ? -1 : 0 )) takuya@~$ echo $b 0
2019-08-29 訂正
三項演算子ありました。 (( ))
を使えば、C言語スタイルの演算ができるので、もしやと思って調べたら・・・