Ale*_*lex 2 linux arrays bash shell
我想知道这样做的"正确"方法.基本上,我有一个名为数组的文件列表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[@]}" )
}
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)
有没有办法做到这一点?或者正确的方法吗?
| 归档时间: |
|
| 查看次数: |
7630 次 |
| 最近记录: |