【发布时间】:2014-10-16 16:16:41
【问题描述】:
我正在尝试做一些非常简单的事情,即在数组中插入一组日期。因此,我运行了一个 git 命令,该命令将返回一行结果,从该结果中我使用 awk 获取日期。在我遍历所有日期并将它们添加到数组之后。最后,数组仍然是空的,但是如果我在循环期间打印数组,它似乎里面有数据。
为什么循环后数组为空?
git reflog --date=local <branch_name> |
awk '{ print $3 " " $4 " " $5 }' |
while read date; do a+=(`echo "$date"`); done; echo ${a[@]}
我知道管道之后的每个命令都在不同的子shell中执行,但在这种情况下,我认为它不会影响最终结果......
【问题讨论】:
-
由于是在子shell中赋值变量,所以变量作用域是子shell,父进程看不到。