bash的三元操作符

2021-07-04  本文已影响0人  CodingCode

类似其他高级语言的(?:)操作符:

如果用标准的bash语句来实现就是:
用if语句:

if [ "$a" == "a" ]; then
   b="b1"
else
   b="b2"
fi

# or one-line syntax
if [ "$a" == "a" ]; then b="b1"; else b="b2"; fi

用case语句:

case "$a" in
 a) b="b1" ;;
 *) a="b2" ;;
esac

在bash里面可以这么用

[ condition ] && variable=value_if_true || variable=value_if_false

举例来说:

[ "$a" == "a" ] && b="b1" || b="b2"

换一种写法:

b=$([ "$a" == "a" ] && echo "b1" || echo "b2")

如果只是判断变量是否存在,还可以简化

b=${a:-"b"}

即如果变量a已经定义,则把a的值赋给b,否则把字符串"b"赋给变量b。

如果是数字,还可以加简化:

(( b = a==0 ? 10 : 20 ))

或者

(( a == 0 ? (b=10) : (b=20) ))
上一篇下一篇

猜你喜欢

热点阅读