如何在Bash中输出数学表达式结果并将其保存到变量中
计算5^0.16并保存到变量的解决方案
我来帮你搞定这个问题!你要实现的是算出5^0.16的结果,同时输出到命令行并存入变量,之前用管道+read的方法失效,核心原因是管道会创建子shell,read命令在子shell里给变量赋值后,父shell根本访问不到这个变量。下面给你两种实用的解决办法:
方法一:命令替换(最推荐)
直接用命令替换把bc的计算结果赋值给变量,之后再输出变量内容就行,简单直接:
# 计算结果存入变量wcEXP wcEXP=$(echo 'e(l(5)*0.16)' | bc -l) # 输出结果到命令行 echo $wcEXP
如果想要更美观的输出格式(比如控制小数位数),可以用printf:
printf "5^0.16 = %.10f\n" $wcEXP
方法二:开启lastpipe选项(针对bash)
如果你坚持想用管道的方式,可以开启bash的lastpipe选项,让管道最后一个命令在当前shell执行,而不是子shell:
# 开启lastpipe选项 shopt -s lastpipe # 管道计算并赋值 echo 'e(l(5)*0.16)' | bc -l | read wcEXP # 输出结果 echo $wcEXP
注意这个方法只在bash环境下有效,而且需要确保你的bash版本支持lastpipe(一般bash 4.2及以上都支持)。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

