我想知道执行此操作的“正确”方法。基本上,我有一个名为 current
的数组中的文件列表。这被声明为一个全局变量,如下所示:current=()
。我已经成功地将所有文件放入这个数组中。但现在,我正在通过并解析参数来过滤掉这些文件和目录。
例如,为了实现 -name '*.pattern'
命令,我将 pattern
传递给 process_name()
这个:
process_name ()
{
local new_cur=()
for i in "${current[@]}"; do
if [[ "$i" == "$1" ]]; then
new_cur+=("$i")
fi
done
current=( "${new_cur[@]}" )
}
循环结束后,我想“清除”我的current
数组。然后我想遍历 new_cur
数组,基本上使它等于 current
,或者如果可以的话,就做类似 $current = $new_cur
(虽然我知道这行不通)。
我已经尝试在 for 循环之后执行此操作(在 process_name()
中),但我的数组 current
实际上并没有改变:
current=( "${new_cur[@]}" )
有什么好的方法吗?还是正确的方法?
最佳答案
要重置数组,只需使用:
current=()
这将删除旧条目并声明一个 0 元素数组。
关于arrays - 重置数组并用 bash 脚本中的值填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28737493/