Frage zur bash
Frank Bergmann
tx-7-12 at tuxad.com
Thu Jan 30 11:31:07 CET 2014
Moin,
"set" setzt die Variablen $0, $1, $2 ...
Schau dazu mal in die man-page der bash - RTFM ist das Zauberwort. ;-)
"junk" ist einfach nur Text und überflüssig, da es mit "shift" wieder
"herausgeschoben" wird. Schau Dir vor und nach shift die Variablen $1 $2
$3... an.
Vielleicht hilft es Dir am meisten, wenn man den Code stufenweise
entschlackt. Das habe ich nachfolgend getan und jeweils einen
Kontrollaufruf des Scripts gemacht, ob es wirklich dieselbe Ausgabe
liefert:
macmini:~/tmp$ cat tmpscript1
#!/bin/bash
LIST="blau gelb rot"
set junk $LIST
shift
for i do
echo $i
done
macmini:~/tmp$ ./tmpscript1
blau
gelb
rot
macmini:~/tmp$ cat tmpscript2
#!/bin/bash
LIST="blau gelb rot"
set $LIST
for i do
echo $i
done
macmini:~/tmp$ ./tmpscript2
blau
gelb
rot
macmini:~/tmp$ cat tmpscript3
#!/bin/bash
set blau gelb rot
for i do
echo $i
done
macmini:~/tmp$ ./tmpscript3
blau
gelb
rot
macmini:~/tmp$ cat tmpscript4
#!/bin/bash
LIST="blau gelb rot"
for i in $LIST
do
echo $i
done
macmini:~/tmp$ ./tmpscript4
blau
gelb
rot
macmini:~/tmp$ cat tmpscript5
#!/bin/bash
for i in blau gelb rot
do
echo $i
done
macmini:~/tmp$ ./tmpscript5
blau
gelb
rot
Frank
On Thu, Jan 30, 2014 at 09:50:21AM +0100, Ralph Meyer wrote:
> ich hätte mal eine Bash Frage.
>
> Ich habe eine Variable LIST
>
> LIST="blau gelb rot"
>
> Jetzt wollte ich in einer For Schleife die einzelnen Wörter ausgeben.
>
> Das geht mit :
>
> --------------------------------
> #!/bin/bash
>
> LIST="blau gelb rot"
>
> set junk $LIST
>
> shift
>
> for i do ;
>
> echo $i
>
> done
>
> --------------------------------
>
> Also die Lösung hab ich schon nur verstehen würde ich das gerne noch.
> Was macht die Bash da ? Eine Erklärung hab ich noch nirgends gefunden.
> In der man Page finde ich nichts zu junk.
More information about the Linux
mailing list