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) ))