2016-06-20 13 views
0

Ich habe die Liste der engagierten Dateien auf svn in einer Variablen gespeichert wie die folgenden:Speichern Ergebnis in Array und Substring in Bash

REPOS="$1" 
TXN="$2" 
DETAILED_FILES=`svnlook changed -t $TXN $REPOS` 

DETAILED_FILES wie folgt aussieht:

U data0.xml A data1.xml UU all_data.xml 

Wie kann ich entfernen alle Änderungstyp Präfixe? wie

U |data0.xml

Ist es auch möglich, diese in einem Array zu speichern?

Und kann ich den vollständigen Pfad dieser Dateien von svnlook erhalten?

Antwort

2

wäre eine richtige Art und Weise sein: die Zitate

repos=$1 
txn=$2 

files=() 

while read -r _ f; do 
    files+=("$f") 
done < <(svnlook -t "$txn" "$repos") 

Verstand! (Sie haben Zitate verwendet, in denen sie nutzlos sind - aber harmlos -, aber die obligatorischen weggelassen!).

+0

du bist real mvp –

+0

machst du, wenn ich den vollen Pfad der festgeschriebenen Dateien von 'svnlook' bekommen kann? –

+0

@ rz3r0 Ich weiß 'svn' nicht gut genug, um diese Frage zu beantworten. Aber wenn Sie den vollständigen Pfad kennen, ist es einfach, ihn im Array hinzuzufügen: Ersetzen Sie die Zeile 'files + = (" $ f ")' mit 'files + = ("/full/path/to/the/files/$ f ") '. Ich weiß nicht, ob das anwendbar ist. –

0

Ja, tun gerade:

FILES=($(echo $DETAILED_FILES | cut -c 3-)) 

Jetzt FILES ein Array ist und Sie die Array-Elemente durch Iterieren über sie zugreifen können:

for i in "${FILES[@]}"; do echo "$i"; done 

Explizit ${FILES[0]} werden Sie das erste Element erhalten, ${FILES[1]} Sekunde und so weiter.

Ich bin nicht vertraut mit svnlook so kann Ihre zweite Frage nicht beantworten.

+0

danke mate. das war hilfreich –