Piszę funkcję bash, aby uzyskać wszystkie repozytoria git, ale napotkałem problem, gdy chcę przechowywać wszystkie ścieżki do repozytorium git do tablicy patharray
. Oto kod:Dołącz do zmiennej tablicowej z polecenia potoku
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[@]}
}
Chcę zapisać wszystkie ścieżki repozytorium do tablicy patharray
, ale nie mogę go poza pipeline
który składa się z polecenia locate
i while
.
Ale mogę uzyskać tablicę w komendzie pipeline
, komenda komentarza # echo -e ${patharray[@]}
działa dobrze, jeśli jest nieakomentowana, więc jak mogę rozwiązać problem?
Próbowałem polecenia export
, jednak wydaje się, że nie może przekazać patharray
do potoku.
'echo -e' będzie również rozszerzyć backslashy w ścieżkach (nie, że są one bardzo prawdopodobne, aby być tam ...). –
Dzięki za przypomnienie, lepszym sposobem jest użycie 'printf'. – zhenguoli