* David Haller wrote on Thu, Nov 22, 2007 at 04:11 +0100:
Schöne Zusammenfassung soweit :)
THX :)
Eines solltest du dir aber noch angewöhnen: Variablen IMMER "so viel wie möglich" zu quoten. Und nicht so wenig wie möglich.
Also wenn du z.B.:
echo "${arr[@]}"
schreiben kannst, dann verwende die "" um die Variablen.
Ja, super, genau, ganz wichtiger Hinweis. Als Kurzform zum Merken finde ich folgendes Klasse: echo "$@" (das sind alle Parameter "so wie sie waren") Kann man gut mit einem Script probieren, was aus /bin/echo "$@" besteht (aufruf mit "--version" " --version" und "--version " usw).
steffen@link:~> p=$( echo hallo ) ; q=H${p:1:3}O ; echo $p - $q hallo - HallO
(weiss jemand, ob das wirklich ohne fork() gemacht wird? müsste eigentlich, oder?)
Im Zweifelsfall mal 'strace -f -eprocess' drauf ansetzen:
(da wird also wirklich nicht geforkt, weil echo als build-in gefunden wird und $(command) schlau ist und für build-ins nicht fork? Hammergeil! Muss man mal drüber meditieren, wie kompliziert das ist und es funktioniert trozdem!)
steffen@link:~> echo $( echo "start in $(pwd)"; ( cd /tmp && pwd ); echo "back in $(pwd)" ) start in /home/steffen /tmp back in /home/steffen
strace -f -eprocess bash -c '\ echo $( echo "start in $(pwd)"; ( cd /tmp && pwd ); echo "back in $(pwd)" )'
Ja, die bash forkt hier. u.a. wg. der subshell für die ().
(Ja, das das forkt ist klar, das war ja genau der Grund für die (), damit das "cd" lokal bleibt. "{ pushd /tmp && ; popd }" seh ich oft, aber auch oft versagen :)) oki, Steffen -- Dieses Schreiben wurde maschinell erstellt, es trägt daher weder Unterschrift noch Siegel. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org