shell能否实现三元表达式呢?像下面这样:

int a = (b == 5) ? c : d;

实现方法:

a=$([ "$b" == 5 ] && echo "$c" || echo "$d")

原理:

&&的优先级比||高,所以如果前面的&&成功,后面的||就不会执行;相反,后面的||就会执行。