重置数组并使用bash脚本中的值填充它

Ale*_*lex 2 linux arrays bash shell

我想知道这样做的"正确"方法.基本上,我有一个名为数组的文件列表current.这被声明为一个全局变量,如下所示:current=().我已成功将所有文件放在此数组中.但是现在,我正在通过解析参数来过滤掉这些文件和目录.

例如,为了执行-name '*.pattern'命令,我通过在patternprocess_name()其中执行此:

process_name ()
{
    local new_cur=()
    for i in "${current[@]}"; do
        if [[ "$i" == "$1" ]]; then
            new_cur+=("$i")
        fi
    done
    current=( "${new_cur[@]}" )
}
Run Code Online (Sandbox Code Playgroud)

循环结束后,我想"清除"我的current数组.然后我想循环遍历new_cur数组,并基本上使它等于current,或者如果我可以,只是做一些事情$current = $new_cur(虽然我知道这将无效).

我已经尝试在for循环(in process_name())之后执行此操作,但我的数组current实际上并没有改变:

current=( "${new_cur[@]}" )
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?或者正确的方法吗?

anu*_*ava 11

要重置数组,只需使用:

current=()
Run Code Online (Sandbox Code Playgroud)

这将删除旧条目并声明0元素数组.