[linux-l] Portable Shell-Scripte (was: Umbenennen mehrerer Dateien)

Benjamin Schieder blindcoder at scavenger.homeip.net
Di Dez 12 06:52:24 CET 2006


On 11.12.2006 23:56:30, Mike Dornberger wrote:
> Hallo Benjamin,
> 
> On Mon, Dec 11, 2006 at 12:09:33PM +0100, Benjamin Schieder wrote:
> >         newname="$( tr '[[:upper:]]' '[[:lower:]]' <<< "${newname}")"
> 
> aha, die bash benutzt <<<, um das expandierte Wort dahinter dem Kommando
> davor auf stdin zu übergeben. Wieder was gelernt. :) Andere Shells tun das
> vielleicht auch, aber es ist wohl nicht POSIX-konform (vgl [1]).

Ja, die bash2 hat da allerdings noch einen Bug drin:

blindcoder at fuzzy:~$ cat <<< $foo
Segmentation fault (core dumped)
blindcoder at fuzzy:~$ rm core
blindcoder at fuzzy:~$ cat <<< "$foo"

Leere Variable ohne "" loest einen Segfault aus. Status: Won't Fix.

> Da [2]echo lt. Spezifikation der OpenGroup -n nicht "wie gewohnt"
> unterstützen muß, sollte man die Zeile, so man denn auf einfache Portierung/
> Plattformunabhängigkeit wert legt, in
> 
>  newname ="$( printf %s "${newname}" | tr '[[:upper:]]' '[[:lower:]]' )"

oder einfach:
$nemnawe="$( echo "${newname}" | tr '[[:upper:]]' '[[:lower:]]' )"

blindcoder at fuzzy:~$ newname="TeST"
blindcoder at fuzzy:~$ newname="$( echo "${newname}" | tr '[[:upper:]]' '[[:lower:]]' )"
blindcoder at fuzzy:~$ echo $newname
test
blindcoder at fuzzy:~$ echo -n $newname
testblindcoder at fuzzy:~$


Gruesse,
	Benjamin
-- 
The Nethack IdleRPG! Idle to your favorite Nethack messages!
http://pallas.crash-override.net/nethackidle/
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20061212/2884adb5/attachment.sig>


Mehr Informationen über die Mailingliste linux-l