bash: a{b,c}d - mit sh?

10/06/2012 - 07:23 von Sabine Baer | Report spam
Guten Morgen,

die bash erlaubt mir, $ echo a{b,c}d auszufuehren mit dem Ergebnis abd
acd. Gibt es etwas aehnliches auch in der sh (Standard shell bei
FreeBSD)?

Sabine

Good public health practice requires day-to-day vigilance, constant
and elevated funding, not a disease-of-the-week approach. (N.N.)
 

Lesen sie die antworten

#1 Sven Mascheck
10/06/2012 - 12:33 | Warnen spam
Sabine Baer wrote:

die bash erlaubt mir, $ echo a{b,c}d auszufuehren mit dem Ergebnis abd
acd. Gibt es etwas aehnliches auch in der sh (Standard shell bei FreeBSD)?



Mir ist nichts àhnliches bekannt.
Als Ersatz wàre einen Schleife möglich,
for i in b c; do ...a${i}d; done,
das kann aber im Einzelfall ein Umschreiben erfordern,
je nachdem wie die brace expansion eingesetzt wurde,
die i.Ggs. zu obigen zu einem sehr früheren Zeitpunkt stattfànde.
Statt ... könnte ein einfaches Kommando stehen oder etwas,
das die Ersetzungen erstmal nur sammelt,
all="$all a${i}d" und dann z.B. cmd $all,
$all ausnahmsweise ohne "".
Vielleicht sieht jmd hier ja auch noch etwas geschickteres.

Obwohl mehrere Shells brace expansion implementieren, wie z.B.
bash, zsh, pdksh (und damit einige ihrer Abkömmlinge wie mksh)
ist das in der FreeBSD sh nicht implementiert, weil brace expansion
nicht in POSIX definiert ist. Diese sh ist eine Variante der ash
und diese Shells sind sehr sparsam mit features, die über POSIX
hinausgehen.

Ähnliche fragen