【问题标题】:Recursive bash loop array null递归 bash 循环数组 null
【发布时间】:2015-10-06 21:23:20
【问题描述】:

我有一个要传递路径的函数。 发生的情况是 function setSub 调用 function testSub 并且在某些情况下 testSub 使用不同的路径调用 setSub

这是我目前所拥有的

shopt -s nullglob 
function setSub() {
    local assets=("$1"/*)   
    echo ${#assets[@]} ######### Here
    for asset in "${assets[@]}";
    do
        if [ -d "$asset" ]; then
            setSub "$asset"
        fi;
    done
}

我标记“这里”的地方输出数组长度。问题是每当它调用自己时,assets 数组就是 0。上面的示例应该向下钻取并列出目录中的项目数。 (示例的作用,而不是我的整个脚本的作用)

【问题讨论】:

  • 你想做什么?看起来您可以使用简单的find "$1" 或类似的方法获得所需的输出。此外,assets 数组在遍历文件而不是目录时将为空。
  • 在我的测试中没问题(显然,在脚本中添加了最终的“setSub $1”)并将其作为“myscript”执行。

标签: arrays bash shell


【解决方案1】:

看来我要找的是shopt -s dotglob 我的测试用例在目录中只有点文件。

但是在@l0b0 的建议之后,我做了一些研究,发现了this。 在阅读了有关 globing 的问题后,我认为最好将其替换为 find

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2021-01-18
    • 2013-10-24
    • 2023-03-24
    • 2018-06-27
    • 2017-01-21
    相关资源
    最近更新 更多