Sto scrivendo una funzione bash per ottenere tutti i repository git, ma ho incontrato un problema quando voglio archiviare tutti i nomi di percorso del repository git nell'array patharray
. Ecco il codice:Aggiungi a una variabile di matrice da un comando pipeline
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[@]}
}
Io voglio salvare tutti i percorsi di repository alla matrice patharray
, ma io non riesco a farlo al di fuori del pipeline
che si compone di comando locate
e while
.
Ma posso ottenere la matrice nel comando pipeline
, il comando commentato # echo -e ${patharray[@]}
funziona bene se non commentato, quindi come posso risolvere il problema?
E ho provato il comando export
, tuttavia sembra che non possa passare il patharray
alla pipeline.
'eco -e' sarà anche ampliare backslash nei percorsi (non che sono molto suscettibili di essere lì ...). –
Grazie per avermelo ricordato, il modo migliore è usare 'printf'. – zhenguoli