我想要做该计算的a * 256 ** 3 + B * 256 ** 2 + C * 256 + d并分配输出到可变和打印分解
dec ='a * 256 ** 3 + b * 256 ** 2 + c * 256 + d'
echo $dec
我收到语法错误与上面的线。
我想要做该计算的a * 256 ** 3 + B * 256 ** 2 + C * 256 + d并分配输出到可变和打印分解
dec ='a * 256 ** 3 + b * 256 ** 2 + c * 256 + d'
echo $dec
我收到语法错误与上面的线。
首先,分配做这样
dec='a * 256 ** 3 + b * 256 ** 2 + c * 256 + d'
这是哪儿来的语法错误。 然后,你就必须评估与运营商$(()),这样你的字符串:
echo $((dec))
对于整数运算,可以使用shell:
dec=$(( a * 256 ** 3 + b * 256 ** 2 + c * 256 + d ))
echo "$dec"
它使用一个算术上下文(( ... ))
来计算值。
请注意,在分配没有空间,这是很重要的!
外壳不支持浮点运算,但bc
或awk
做。 例如,使用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之前丢失。