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