Befehl wird in while nicht ausgeführt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
reox
Beiträge: 2530
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Befehl wird in while nicht ausgeführt

Beitrag von reox » 06.03.2012 11:58:08

Ich hab ein sehr komisches Problem, und zwar wird der Befehl in einer while Schleife einfach weggeschmissen und stattdessen versucht die parameter auszuführen...

Mein Code:

Code: Alles auswählen

adb shell ls /foo/bar | while read file 
do
    folder="/foo/bar/$file"                                                                                                                                                                                                                                                    
    adb pull $folder download
done
soll im prinzip alle datein von einem android handy aus dem verzeichnis /foo/bar. So weit so gut. Wenn ich das ausführe bekomme ich folgenden output:

Code: Alles auswählen

' does not existfoo/bar/filesdfsdf.sdf
das eben für jede datei die dort im ordner ist.

Wenn ich sage

Code: Alles auswählen

    echo "adb pull $folder download"
bekomme ich als ausgabe

Code: Alles auswählen

 download/foo/bar/fileasdfs.sdf
eben wieder für jede zeile.
Wenn ich die "" durch '' ersetze erhalte ich die korrekte ausgabe von

Code: Alles auswählen

adb pull $folder download
Wieso werden denn die parameter so umngeschmissen und der command ersetzt? verwende ich ein reserviertes Wort oder was läuft da schief?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Befehl wird in while nicht ausgeführt

Beitrag von rendegast » 14.03.2012 09:28:09

Das komplette Skript?
Wenn ich die "" durch '' ersetze erhalte ich die korrekte ausgabe ...
Vielleicht kann ein Editor mit Syntax-Highlighting Dir ein falsch gesetztes Quote zeigen?
(mcedit ist nett (zBsp. abschließende Klammern leuchten auf),
aber es kommt bei komplizierteren Skripten beim Syntax-Highlighting gelegentlich aus dem Tritt.
Dann wäre mit zBsp. vim oder notepad2 eine Gegenprobe zu machen.)

Die Ausgabe von 'adb shell ls /foo/bar' ist gut für 'while read'?
Eventuell mit Steuerzeichen angereichert?
Vielleicht als Filter zuerst in eine temporäre Datei leiten und von da mit 'cat' einlesen?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten