bc中是否支持if语句或三元运算符?
关于bc中条件判断写法的问题解答
bc不支持你这种将if语句内嵌在算术表达式里的写法,而且它本身也没有类似C语言的三元运算符(? :)。bc的if是流程控制语句,不能直接作为表达式嵌入到计算式中。
要实现你想要的逻辑(将输入值限制在0-100之间,再计算与254的比例),有两种可行方案:
方案1:在bc内部完成值的限制
把条件判断拆成bc的独立语句,先修正输入值再计算:
level=$(echo "scale=0; val=$1; if (val > 100) val=100; (254 * val) / 100" | bc)
方案2:先在Shell层面处理值,再传给bc
如果你的Shell是bash/zsh这类支持三元运算符的,可以先把输入值限制好,再交给bc做运算:
clamped_val=$(( $1 > 100 ? 100 : $1 )) level=$(echo "scale=0; (254 * $clamped_val) / 100" | bc)
内容的提问来源于stack exchange,提问作者Richard Barraclough
相关产品推荐
相关产品推荐

