Ich bekomme:
%Vor%Hinweis: Die zusätzlichen Leerzeichen vor Db und Dc in der 2. und 3. Zeile des Ausgangs.
Warum sind diese da?
Danke, Dan
Bearbeiten : Da mein eigentliches Ziel Leerzeichen enthielt (die ich eigentlich hätte schreiben sollen):
%Vor%Die meisten Lösungen hier funktionierten nicht für mich (for loop, xarg, tr). Printf funktionierte nicht wegen mehrerer geschweifter Klammern, die ich zum cantesischen Produkt haben möchte.
Ich habe 3 Lösungen kombiniert (memberle's \ b, Dennis Williamson's extra Leerzeichen, und Jim Dennis benutzt weit weniger Zitate) um zu bekommen:
%Vor%Danke allen, die geantwortet haben! Ich habe viel von deinen Antworten gelernt!
Dan
Weil das die Klammerextension ist. Von man bash
, unter der Überschrift Brace expansion
:
Muster, die geschweift werden sollen, nehmen die Form eines optionale Präambel, gefolgt von ... einer Reihe von durch Kommas getrennten Strings ... gefolgt von einem optionalen Nachschrift. Die Präambel ist vorangestellt zu jeder Zeichenfolge innerhalb der geschweifte Klammern, und das PostScript wird dann an jeden resultierenden Anhang angehängt Zeichenfolge, von links nach rechts expandierend Zum Beispiel expandiert ein {d, c, b} e in 'Ade ace abe'
Also in Ihrem Beispiel ist "D" die Präambel und ".jpg \ n" ist das Postscript.
Nach der Erweiterung der Klammer bleibt also:
echo -e Da.jpg\n Db.jpg\n Dc.jpg\n
Wie Hewgill darauf hinweist , die Shell teilt es dann in drei Tokens auf und übergibt sie an Echo; welches jedes Token durch ein Leerzeichen getrennt ausgibt. Um die gewünschte Ausgabe zu erhalten, müssen Sie hier einen der vielen Vorschläge verwenden, die den unerwünschten Abstand zwischen den Tokens nicht wieder einfügen.
Es ist länger und wahrscheinlich nicht der beste Weg, dies zu tun, aber das Folgende gibt die Ausgabe, nach der Sie suchen:
%Vor% echo
fügt immer Leerzeichen zwischen Argumenten hinzu. Versuchen Sie Ihren Befehl ohne \n
und vergleichen Sie die Ergebnisse.
Sie können ein konsistenteres Aussehen erhalten, indem Sie eine Null voranstellen:
%Vor% Jetzt haben sie alle einen zusätzlichen Platz. Außerdem wird mit -n
der zusätzliche Zeilenumbruch am Ende entfernt. Sie können auch einen Bereich in Ihrer geschweiften Klammer verwenden.