[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: „while“ statt „for“



On 31.03.2011 06:48, Alexander Skwar wrote:
Hallo.

Mit `…` bzw. $(…) startet man aber doch auch eine Subshell oder nicht?

--
Alexander

Am 30.03.2011 23:06 schrieb "Michelle Konzack"
<linux4michelle@tamay-dogan.net <mailto:linux4michelle@tamay-dogan.net>>:
 > Hello Alexander Skwar,
 >
 > Am 2011-03-30 09:12:39, hacktest Du folgendes herunter:
 >> 2011/3/29 Thomas Hochstein <thh@inter.net <mailto:thh@inter.net>>:
 >> > | for i in `mysql -u root -N -B -e "show databases;" | fmt`
 >> > | do
 >> IMO besser:
 >> | mysql -u root -N -B -e "show databases;" | while read i
 >> | do
 >
 > Das startet aber eine Extra-Shell für "while"
 > und Du mußt it Umgebungsvariablen aufpassen.
 >

Die subshell kommt von der pipe '|' nicht von while.
Der Unterschied zw. pipe und process subtitution ist, dass bei zweiter Lösung Variablen die gesetzt werden erhalten bleiben, da der 'datenlieferant' und nicht der 'worker' in der subshell läuft.

printf "%s\n" "foo" | while read; do bar=foo; done; echo $bar

while read; do bar=foo; done < <(printf '%s\n' "foo bar"); echo $bar
foo


Reply to: