Arrays in Shellskript?

ww

Well-Known Member
Moin.

Gibt es die Möglichkeit, innerhalb eines Shellskripts Daten in ein Array zu packen und dann in einer Schleife abzuarbeiten? Ich suche so etwas wie:

array (foobar1, foobar2, foobar3);
while ($array) {
mach_irgend_etwas;
}

Danke sehr,
Wolfgang

P.S.: Link zu rtfm wäre ebenfalls erwünscht ;-)
 
meinst du sowas?

Code:
dettus@kuehlschrank:[~/prog/sh]cat array.sh
#!/usr/local/bin/bash

export ARRAY="a b c d e"
for I in $ARRAY
do
        echo $I;
done
dettus@kuehlschrank:[~/prog/sh]bash array.sh
a
b
c
d
e

wo wir gerade bei shellskripten sind:
Code:
dettus@kuehlschrank:[~/prog/sh]./quine.sh
#!/bin/cat

dies ist ein quine. quines sind programme, die ihren eigenen quellcode ausgeben.
dettus@kuehlschrank:[~/prog/sh]cat quine.sh
#!/bin/cat

dies ist ein quine. quines sind programme, die ihren eigenen quellcode ausgeben.
:D
 
Danke, Männer.

Habt ihr einen Buchtipp zum Thema Shellprogrammieren? Ich muß mich da ein bißchen einlesen...

Danke,
W.
 
hallo wolfgang,

da gibt's zum beispielt "unix shell programming" von sams oder "unix power tools" von o'reilly.

lg uw
 
(11:07:51) wwdent@toni: /home/wwdent# man bash
No manual entry for bash

Ich habe eben "Unix Shell Programming" von Sams bestellt -> Wochenendlektüre ohne Familie ;-)
 
sogar matrizen gehen mit der "Bourne SHell"

sogar matrizen gehen mit der "Bourne SHell":

Code:
#!/bin/sh

MATRIZ="a b c d e
1 2 3 4 5
A B C D E"

### nur die zweite Zeile nehmen
ARRAY=`echo "${MATRIZ}"|head -n2|tail -n1`

for I in $ARRAY
do
        echo $I;
done

wichtig sind nur die doppelten Anführungszeichen (echo "${MATRIZ}"|), sonst wird es wie ein Array/Liste behandelt.
:)
 
quarzsnoopy schrieb:
### nur die zweite Zeile nehmen
ARRAY=`echo "${MATRIZ}"|head -n2|tail -n1`
[/CODE]

Oh, wenn man exakt eine Zeile rausschnippeln will, dann kann man das effizient auch mit sed(1) erledigen:

Code:
echo "$MATRIZ"|sed 2q\;d

:p
 
Zurück
Oben