如何计算的输出分配给一个变量壳(How to assign the output of calcul

2019-10-23 00:08发布

我想要做该计算的a * 256 ** 3 + B * 256 ** 2 + C * 256 + d并分配输出到可变和打印分解

dec ='a * 256 ** 3 + b * 256 ** 2 + c * 256 + d'
echo $dec

我收到语法错误与上面的线。

Answer 1:

首先,分配做这样

dec='a * 256 ** 3 + b * 256 ** 2 + c * 256 + d'

这是哪儿来的语法错误。 然后,你就必须评估与运营商$(()),这样你的字符串:

echo $((dec))


Answer 2:

对于整数运算,可以使用shell:

dec=$(( a * 256 ** 3 + b * 256 ** 2 + c * 256 + d ))
echo "$dec"

它使用一个算术上下文(( ... ))来计算值。

请注意,在分配没有空间,这是很重要的!

外壳不支持浮点运算,但bcawk做。 例如,使用AWK(并假设你有壳变量$a$b$c$d定义):

awk -v a="$a" -v b="$b" -v c="$c" -v d="$d" 'BEGIN{print a * 256 ** 3 + b * 256 ** 2 + c * 256 + d}'

或使用BC:

printf '%s * 256 ^ 3 + %s * 256 ^ 2 + %s * 256 + %s\n' "$a" "$b" "$c" "$d" | bc -l

使用字符串格式说明%s用于每个外壳的变量意味着没有精度值传递给BC之前丢失。



文章来源: How to assign the output of calculation to a shell variable
标签: shell