【发布时间】:2016-09-10 18:36:44
【问题描述】:
我正在编写一个 bash 函数来获取所有 git 存储库,但是当我想将所有 git 存储库路径名存储到数组 patharray 时遇到了问题。代码如下:
gitrepo() {
local opt
declare -a patharray
locate -b '\.git' | \
while read pathname
do
pathname="$(dirname ${pathname})"
if [[ "${pathname}" != *.* ]]; then
# Note: how to add an element to an existing Bash Array
patharray=("${patharray[@]}" '\n' "${pathname}")
# echo -e ${patharray[@]}
fi
done
echo -e ${patharray[@]}
}
我想将所有存储库路径保存到 patharray 数组,但我无法在由 locate 和 while 命令组成的 pipeline 之外获取它。
但是我可以在pipeline 命令中获取数组,注释命令# echo -e ${patharray[@]} 如果不注释的话效果很好,那么我该如何解决这个问题呢?
我已经尝试了export 命令,但是它似乎无法将patharray 传递给管道。
【问题讨论】:
-
echo -e还将扩展路径中的反斜杠(并不是说它们很可能存在...)。 -
感谢提醒,最好使用
printf。