如何将计算输出分配给shell变量

如何将计算输出分配给shell变量,shell,Shell,我想做这个计算a*256**3+b*256**2+c*256+d,将输出分配给变量并打印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" 这使用算术上下文(…)来计算值 请注意,作业中没有空格,这很重要 shell不支持浮点运算,

我想做这个计算a*256**3+b*256**2+c*256+d,将输出分配给变量并打印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"
这使用算术上下文
(…)
来计算值

请注意,作业中没有空格,这很重要

shell不支持浮点运算,但支持
bc
awk
do。例如,使用awk(并假设已定义shell变量
$a
$b
$c
$d
):

或使用bc:

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

为每个shell变量使用字符串格式说明符
%s
,这意味着在将值传递给bc之前不会丢失精度。

首先,赋值是通过这种方式完成的

dec='a * 256 ** 3 + b * 256 ** 2 + c * 256 + d'
这就是语法错误的来源。 然后,只需使用运算符$(())对字符串求值,方法如下:

echo $((dec))

. 您使用的shell是什么?flag=$($dec&(1@user3823859这是一个完全独立的问题,但我认为您正在寻找{code>flag=$((dec&1dec2ip(){localip dec=$@如果[$dec<0],那么dec=$((dec+429496796))对于{3..0}do中的e((八位组=dec/(256**e))((dec-=八位组*256**e))ip+=$delim$octet delim=.done printf'%s\n'$ip'}我解决了这个问题的一半,但它显示了错误:意外标记`}附近的语法错误
echo $((dec))