【问题标题】:Bash not splitting a string into an array past the first indexBash不会将字符串拆分为第一个索引之后的数组
【发布时间】:2018-01-18 18:23:03
【问题描述】:

我有一个变量设置为我当前工作目录中的所有子目录,我这样做是这样做的

directories=` ls -d -- */`

这会将以下内容返回给我“d1/d2/”,我想将其拆分为空格,因此我运行以下代码,我发现堆栈溢出似乎对其他人有用但不适用于我.代码是

IFS=' ' read -ra grArray <<< "$directories"

现在这应该将我的字符串分成两个索引 grArray[0] 和 grArray[1],它们应该分别是“d1/”和“d2/”,但是当我尝试打印数组的两个索引时,我得到“d1 /" 并且第二个数组显示为 " "

如果有人能指出我在这里缺少的东西,我将不胜感激。谢谢。

【问题讨论】:

    标签: arrays string bash split


    【解决方案1】:

    不要像这样使用ls;只需使用 glob 直接设置数组:

    directories=( */ )
    

    【讨论】:

    • 我本来打算做grArray=( */ ),但你打败了我:)
    • 所以这只是为我返回 /d1 它不会返回两个子目录。
    • 是的,确实如此。您可能正在做类似echo "$directories" 的事情,而不是正确的扩展echo "${directories[@]}"
    • 啊,你是对的,我的错。它现在应该可以正常工作了,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多