如何在Bash中的for循环中附加元素?

时间:2019-10-28 14:14:03

标签: 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[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的用户循环了,它将退出循环,但是当我回显数组exceeded_users[@]时却没有任何输出。我需要在第二条if语句中获取数组值。

如果您有另一种方法可以在循环一次运行后退出循环 所有超过700MB的用户,我都适合。

1 个答案:

答案 0 :(得分:0)

超出数组用户数组在函数exit_loop中本地声明,因此它不会保留调用之间存储的值。尝试在函数exit_loop之前声明超出用户,以便它是全局的,或者尝试使用-g标志Cannot convert Python object to 'vector[PyObject]]对其进行声明以使其成为全局的。 (感谢查尔斯·达菲指出-g标志)