Forums Neueste Beiträge
 

bash-Parameter {${VAR}} ?

06/04/2012 - 15:50 von Magnus Warker | Report spam
Hallo,

ich verwende eine Komma-separierte Liste, deren Eintràge zu Optionen für
einen rsync-Aufruf expandiert werden:

liste=aaa,bbb,ccc
optionen=`eval echo --exclude={${liste}}`

Danach enthàlt $optionen folgendes:
"--exclude=aaa --exclude=bbb --exclude=ccc"

Soweit so gut. Ein Problem gibt es allerdings, wenn die Liste nur einen
Eintrag enthàlt:

liste=aaa

Danach enthàlt $optionen folgendes:
"--exclude={aaa}"

D. h. die geschweiften Klammern sind unerwünscht.

Warum ist das so und wie kann man das beheben?

Danke
Magnus
 

Lesen sie die antworten

#1 Sieghard Schicktanz
06/04/2012 - 19:37 | Warnen spam
Hallo Magnus,

Du schriebst am Fri, 06 Apr 2012 15:50:23 +0200:

ich verwende eine Komma-separierte Liste, deren Eintràge zu Optionen für
einen rsync-Aufruf expandiert werden:


...
D. h. die geschweiften Klammern sind unerwünscht.

Warum ist das so und wie kann man das beheben?



_Warum_ das so ist, steht - "natürlich" - in der man page:

A correctly-formed brace expansion must contain unquoted opening
and closing braces, and at least one unquoted comma or a valid
sequence expression. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
see?
Kannst Du also ohne Nachbearbeitung nicht vermeiden. Hàng' halt noch eine
Zeile "optionen=${optionen//[\{\}]/}" dran, das entfernt die unerwünschten
Klammern.

(Weitergabe von Adressdaten, Telefonnummern u.à. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder àhnlichem)
Mit freundlichen Grüßen, S. Schicktanz

Ähnliche fragen