gpt4 book ai didi

linux - while 循环后为空数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:03 24 4
gpt4 key购买 nike

我正在尝试做一些非常简单的事情,包括将一组日期插入数组。所以我运行了一个 git 命令,它将返回一行结果,从该结果我使用 awk 获取日期。在我遍历所有日期并将它们添加到数组之后。最后,数组仍然是空的,但如果我在循环期间打印数组,它似乎里面有数据。

为什么循环后数组为空?

git reflog --date=local <branch_name> | 
awk '{ print $3 " " $4 " " $5 }' |
while read date; do a+=(`echo "$date"`); done; echo ${a[@]}

我知道管道后的每个命令都在不同的子 shell 中执行,但在这种情况下我认为它不会影响最终结果...

最佳答案

您的 while 循环在子 shell 中运行,因此变量在它完成后超出范围。

由于您使用的是 bash,因此您可以改用进程替换:

while read date; do 
a+=( $(echo "$date") )
done < <(git reflog --date=local <branch_name> | awk '{ print $3 " " $4 " " $5 }')
echo "${a[@]}"

关于linux - while 循环后为空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409220/

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