如何递归到所有子模块并将信息保存到数组?该数组应该可以从.auth().preemptive().basic(CLIENT_ID, CLIENT_SECRET)
外部访问,在下面的示例中,我试图保存其中包含git submodule foreach
的所有路径。
foo
答案 0 :(得分:2)
git submodule foreach
在子外壳中运行。这意味着没有直接的方法可以影响父外壳,而这又意味着您需要间接地影响父外壳。 。
执行此操作的方法有很多,但是一种简单的方法是写入文件,然后使用source
或.
来读取文件。鉴于以上语法,您大概正在使用bash,所以:
git submodule foreach --recursive '[[ "$name" = *"foo"* ]] && \
( echo $path; echo "paths+=($path)" >> /tmp/paths ) || true'
source /tmp/paths
rm /tmp/paths
echo ${paths[@]}
执行此操作的另一种方法是eval
foreach的输出,但这比较棘手,因为您必须小心使用 all 输出。 exec
有一个方便的技巧,可以重定向各种文件描述符:
exec 1>&3
eval $(command)
其中command
扩展(通过别名或shell函数,脚本或任何其他方式)扩展为:
command() {
exec 4>&1 1>&3 3>&-
echo now we can print normally
echo var=value 1>&4 # this is a directive for the "eval"
}
外部3>&1
为内部command
复制标准输出,然后将其fd 1移至fd 4,将3移至1,然后关闭3。现在内部命令的stdout为与外部标准输出相同,而fd 4是要进行eval
编辑的项目。
答案 1 :(得分:0)
将这些值作为赋值语句写入临时文件。源临时文件。