繁体   English   中英

Bash 数组未正确写入变量

[英]Bash array is not written properly into a variable

我正在尝试编写一个简单的 bash 脚本,它将十进制数计算为二进制数。 一切正常,直到我计算出一个大于 255 的数字。

我必须从右到左读取 id 以获得正确的结果,所以我决定创建一个 function ,它将 0 和 1 保存到每个数组中。 然后我从最大的数字开始将数组写入一个变量。 现在的问题是这适用于数字 255,但对于更高的数字,它会做一些我无法理解的事情,结果是 0-9 的数字,这在逻辑上是不可能的。 有谁知道为什么?

Bash:

#!/bin/bash

function thegreatervalue {

declare -a localArray
local -a localArray
outN=""
Gmain=$eingabe
Gmod=$eingabe
Gout="Result: "
GoutC=""

localArray[counter]=""

while [ $Gmain -ne 0 ];
do
    counter=""
    minuscounter=""

    if [ $(( $Gmod % 2 )) -eq 1 ];then
        localArray[counter]+="1"

    else
        localArray[counter]+="0"

    fi

    Gmain=$(( $Gmain / 2 ))
    Gmod=$(( $Gmod / 2 ))
    counter=$(( $counter + 1 ))
    minuscounter=$(( $minuscounter + 1 ))

done

echo "in the LoAr: ${localArray[@]}"

while [ $minuscounter -ne 0 ];
do
    i=$minuscounter
    i=$(( $i - 1 ))
    minuscounter=$(( $minuscounter - 1 ))
    outN=$(( $outN + "${localArray[i]}" ))
done

while [ $(( 8 - ${#outN} )) -ne 0 ];
do
    outN+="0"
done

echo $Gout$outN

}
echo "Decimal: "
    read eingabe 

if [ $eingabe -gt 254 ];then
    thegreatervalue

else
    echo "enter a number higher than 254!"
fi
$bc <<< "obase=2;255"
11111111
$bc <<< "obase=2;256"
100000000

二进制

255 --> 11111111(8位)
256 --> 100000000(9位)

while [ $(( 8 - ${#outN} )) -ne 0 ];
do
    outN+="0"
done

您的这部分代码不能作为8 - ${#outN}将继续以负数递增

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM