添加到数组(bash)

伪装者73

我目前正在尝试模拟Buddy算法的简单版本。此代码提取应模拟将进程添加到数组List中的过程,其中$ speicher =应格式化的RAM。(变量为德语)$ prozess =添加到RAM中的进程。当试图运行脚本时,我在第19行= arraySpeicher + =($ j / 2)中得到了错误=大量递归。(同样,该错误是德语的,因此我不能完全确定那是否是正确的错误)$ i应该具有$ prozess的值,该值需要进行格式化以适合Buddy算法的主体。

我该如何解决要将格式化的值添加到数组中的问题?

#!/bin/bash
echo "Wie groß ist ihr Arbeitsspeicher?: " 
read speicher
#Einlesen des Arbeitsspeichers
echo "Wie groß ist ihr Prozess den sie dem Speicher hinzufügen wollen?: "
read prozess

if (( prozess < 0 )); then
   echo "Dein Prozess ist zu klein & hat keine relevante Größe." 
   exit
   fi

arraySpeicher=($speicher)
arrayName=()

for i in "${arraySpeicher[@]}"; do
    if (( $prozess <= $i )); then
        j=$i
        unset arraySpeicher[$i]
        while (( $prozess < $j/2 )); do
            arraySpeicher+=($j/2)
            ((j=j/2))
            done
        arraySpeicher+="p ${#ArrayName[@]}"
        arrayName+=$prozess

    fi
    done

echo "Dies ist ihr Speicher ${arraySpeicher[@]} nach hinzufügen des Prozesses."

while (( true )); do
    PS3="Möchten sie einen Prozess hinzufügen / entfernen / aufhören?"
    select eingabe in hinzfügen entfernen aufhören 
    do 

if (( $eingabe == hinzufügen )); then
    echo "wie groß ist der Prozess?:"
    read prozess

    if (( prozess < 0 )); then
        echo "Ihr Prozess ist zu klein." 
        exit
        fi

    for i in "${arraySpeicher[@]}"; do
        if (( $i == int )) #TODO: nur zahlen dürfen behandelt werden, prozesse nicht!!
        if (( $prozess <= $i )); then
            j=$i
            unset arraySpeicher[$i]
            while (( $prozess < $j/2 )); do
                arraySpeicher+=($j/2)
                ((j=j/2))
                done
            arraySpeicher+="p ${#ArrayName[@]}"
            arrayName+=$prozess

            break
        fi
        echo "Dies ist ihr Speicher ${arraySpeicher[@]} nach hinzufügen des Prozesses."
        fi
        done    


if (( $eingabe == entfernen )); then
echo "Welchen Prozess willst du entfernen:?"
read antwort
p=arrayName[$antwort]
z=1
while (( $z < $p )); do
z=((z*2))
done

#TODO: stelle muss die position von dem gewünschten Prozess("p"+$antwort) in dem arraySpeicher beinhalten!
arraySpeicher[$stelle]=z

h=1
while (( $h == 1 )); do
h=2
for i in "${arraySpeicher[@]}"; do
if (( i < "${#arraySpeicher[@]}"-1 )); then
if (( arraySpeicher[$i] == arraySpeicher[$i+1] )); then
unset arraySpeicher[$i+1]
arraySpeicher[$i]=((arrayspeicher[$i]*2))
h=1
fi
fi
done 
done

fi

if (( $eingabe == aufhören )); then
break
fi
done
done

编辑:我只是把我现在的整个代码。仍然要做一些工作,仍然需要添加注释并缩进代码。希望此脚本完成!提前寻求帮助!

疾病

问题是您没有在下面的行中分配结果

j=j/2

更改为

((j=j/2))

当您将字符串赋值j/2给$ j时,将其j/2用作算术表达式(在while条件中)会尝试expand $j,但会扩展为j/2,因此会尝试expand $j依此类推

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash逐步添加到数组

来自分类Dev

添加到数组

来自分类Dev

bash数字数组提取数字并添加到var

来自分类Dev

Bash:将目录名称添加到数组中

来自分类Dev

并行添加到数组

来自分类Dev

将数组添加到数组中

来自分类Dev

PHP:添加到数组中的数组

来自分类Dev

将数组添加到数组Ruby

来自分类Dev

如何削减bash数组中的最后3个元素并将其添加到数组中

来自分类Dev

Bash:将值添加到关联数组,而键=>值已存在

来自分类Dev

如何在循环的每次迭代中将元素添加到Bash中的数组中?

来自分类Dev

解析字符串中的变量,并使用Bash将它们添加到数组中

来自分类Dev

使用bash将数据从数组添加到文件中的新列

来自分类Dev

Bash 将正则表达式值添加到数组

来自分类Dev

将bash脚本添加到路径

来自分类Dev

使用bash脚本添加到$ PYTHONPATH

来自分类Dev

将元素添加到数组

来自分类Dev

将值添加到对象数组

来自分类Dev

将元素添加到numpy数组

来自分类Dev

将数据添加到多维数组

来自分类Dev

将多维数组添加到列表

来自分类Dev

将元素添加到空数组

来自分类Dev

将数组添加到MySQL Fetch

来自分类Dev

将数组添加到集合

来自分类Dev

将数组添加到ArrayList

来自分类Dev

将元素添加到数组的开头。

来自分类Dev

将Hashmap数组添加到Listview

来自分类Dev

将数组列添加到资源

来自分类Dev

将键添加到php数组