gpt4 book ai didi

arrays - Bash:无法在管道右侧构建数组

转载 作者:行者123 更新时间:2023-11-29 09:11:31 25 4
gpt4 key购买 nike

有人知道为什么这段代码没有按预期工作吗?

$> svnTags=()
$> svn ls http://plugins.svn.wordpress.org/duplicate-post/tags/ | while read line; do slashless=$(sed 's#/$##g' <<< $line); echo "slashless - $slashless"; svnTags+=($slashless); done
slashless - 1.0
slashless - 1.1
slashless - 1.1.1
slashless - 1.1.2
slashless - 2.0
slashless - 2.0.1
slashless - 2.0.2
slashless - 2.1
slashless - 2.1.1
slashless - 2.2
slashless - 2.3
$> echo "$svnTags[@]"

没有给出任何输出,我希望它输出构建的 svn 标签数组。

第二条命令:

svn ls http://plugins.svn.wordpress.org/duplicate-post/tags/ | while read line; do
slashless=$(sed 's#/$##g' <<< $line)
echo "slashless - $slashless"
svnTags+=($slashless)
done

最佳答案

因为 | 之后发生的是一个子 shell。在子 shell 中更改的变量不会传播回父 shell。

常见的解决方法:

while read line ; do
...
done < <(svn ls http://...)

关于arrays - Bash:无法在管道右侧构建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com