Don’t quote me!
Samstag, den 13. August 2005Argh. Jetzt habe ich mich einige Stunden mit einer komischen Eigenart der BASH rumgeschlagen. Quoting. Eigentlich simpel. Eigentlich. Aber es gibt Ausnahmen.
Zum Beispiel werden singlequotes innerhalb von doublequotes zu “'\''” escaped. In meinem Fall wollte ich einige --exclude statements für ein rsync-Skript schreiben und die Parameter in einer Variablen speichern. Wenn aber dann statt “--exclude '*'” einfach “--exclude '\''*'\''” übergeben wird, funktioniert das nicht mehr wirklich. Und Google hat mir auch nicht geholfen.
Anyway, hier also die Lösung: alles gleich machen wie bisher, einfach rsync indirekt über eval aufrufen:
RSYNC_OPTS="-rtvL --progress --include '*.txt' --exclude '*'" eval rsync $RSYNC_OPTS "/the/source/dir" "/the/target/dir"
So. Hoffe dem nächsten hilft Google. Hier noch einige Keywords die ich versucht habe. Indexieren bitte!
bash, variable, options, quoting, escape, exclude, rsync, expand
