如何在Bash中为循环添加元素?

如何在Bash中为循环添加元素?,bash,Bash,我有以下伪代码: #!/bin/bash USERS_LIST=$(cat users.txt) function exit_loop() { declare -a exceeded_users if [[ $SUM -gt 7000 ]];then echo $SUM exceeded_users+=("$USER") fi #CHECK LAST USER IN THE ARRAY if [[ $USER = ${a[

我有以下伪代码:

#!/bin/bash
USERS_LIST=$(cat users.txt)

function exit_loop() {
    declare -a exceeded_users
    if [[ $SUM -gt 7000 ]];then
        echo $SUM
        exceeded_users+=("$USER")
    fi
    #CHECK LAST USER IN THE ARRAY
    if [[ $USER = ${a[exceeded_users{#exceeded_users[@]}-1]} ]];then
        break
    fi
    echo "${exceeded_users[@]}"
}

for USER in $USERS_LIST;do
    SUM=$(( $LAST_DATE_SIZE - $PREVIOUS_DATE_SIZE ))
    exit_loop
done
我的目标是,函数“exit_loop”将在循环所有超过700mb的用户后退出循环,但当我回显数组
extended_users[@]
时,我没有得到任何输出。我需要在第二条if语句中获取数组值

如果你有另一种方法退出循环一次循环运行一次
所有超过700MB的用户我都将使用它。

数组超出\u用户在函数exit\u循环中本地声明,因此它不会保留调用之间存储的值。请尝试在函数退出_循环之前声明超出的_用户,使其成为全局的,或者使用-g标志
declare-ag excelled_users
将其声明为全局的。(感谢Charles Duffy指出-g标志)

必须有一些代码来计算
上次日期大小
上次日期大小
。您是否可以共享以提供备选方案?使用
declare-g-a arrayname
定义全局数组而不是本地数组。顺便说一句,将列表存储在字符串中是。。。不太好;扩展容易出错(如果您的文件包含独立的
*
,则最终将迭代当前目录的内容)。考虑<代码> RealStudio -T UsSersList<用户> TXT < /C>,如果您的文件包含每个用户一行。您不能从循环调用的函数< <代码>破解< /代码>。代码>中断必须直接在循环内部。@JohnKugelman在bash4+中,是的。Bash3允许在函数中使用它。