2016-09-19 1 views
1

Ich habe einige in einer Variablen gespeichert Pfade (Variablenname -> Test)Read Variable, die Leerzeichen in seinem Wert hat

echo "${test}" 

Ergebnis:

/abc/pqr/filepath1 
/abc/pqr/lmn/file path2 
/abc/pqr/rst/filepath3 

Ich will "Raum" entkommen Zeichen in dem zweiten Pfad und den Besitzer für jeden Pfad erhalten, verwende ich folgenden Befehl ein:

stat -c '%U' ${test} , works for 1st and 3rd path. 

Wie kann ich diese Arbeit für die 2 machen nd Pfad? Danke im Voraus.

+1

Sie haben alle Pfade in einem einzigen String in einer Variablen? Dies scheint, als wäre es ein besserer Ort, um ein Array zu verwenden –

+1

Wie erhalten Sie diese Pfade in '$ test'? – anubhava

Antwort

1

Verwenden Sie ein while Konstrukt jeden Dateinamen zu bekommen, eine pro Zeile:

while IFS= read -r f; do stat -c '%U' "$f"; done <<<"$test" 

Beispiel:

$ echo "$test" 
/abc/pqr/filepath1 
/abc/pqr/lmn/file path2 
/abc/pqr/rst/filepath3 

$ while IFS= read -r f; do echo "$f"; done <<<"$test" 
/abc/pqr/filepath1 
/abc/pqr/lmn/file path2 
/abc/pqr/rst/filepath3 
+2

Aber der Name ist 'Dateipfad2', nicht' Dateipfad2'. –

+0

@BenjaminW. Es ist mir noch nicht klar, wenn das der Fall ist, dann wäre es einfacher, keine Notwendigkeit für die Entfernung des Raumes. Bearbeitet. – heemayl

+1

Es ist ziemlich klar, dass das OP Dateinamen hat, die Leerzeichen enthalten (er will ihnen entkommen, sie nicht löschen, so dass der Aufruf von "stat" funktioniert). – chepner

Verwandte Themen