如何将计算输出分配给shell变量
我想做这个计算a*256**3+b*256**2+c*256+d,将输出分配给变量并打印dec如何将计算输出分配给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不支持浮点运算,
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))