listenausgabe in array?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von xeeen, 17.09.2007.

  1. xeeen

    xeeen Mitglied

    Dabei seit:
    24.04.2007
    Beiträge:
    32
    Zustimmungen:
    0
    hi,

    ein

    Code:
    cat adresses | grep @isp.com
    
    gibt eine liste aller adressen aus, die auf @isp.com enden. diese würde ich am liebsten in einem array (?) speichern, um später an jede adresse eine mail zu versenden bzw. um die adressen bei bedarf an verschiedenen stellen wieder zu verwenden.

    wie kann ich das realisieren?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. buli

    buli Debianator

    Dabei seit:
    16.09.2006
    Beiträge:
    789
    Zustimmungen:
    0
    Ort:
    Essen/Ruhrgebiet
    Useless use of cat

    Code:
    VAR=`grep '@isp.com' adresses`
    In der bash gibt es AFAIK keine Arrays. Kann mich aber auch taeuschen.

    Nimm doch lieber Perl.
     
  4. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Es gibt Arrays in Bash.
     
  5. buli

    buli Debianator

    Dabei seit:
    16.09.2006
    Beiträge:
    789
    Zustimmungen:
    0
    Ort:
    Essen/Ruhrgebiet
    Ouch!
     
  6. #5 b3ll3roph0n, 17.09.2007
    b3ll3roph0n

    b3ll3roph0n Tripel-As

    Dabei seit:
    13.07.2007
    Beiträge:
    160
    Zustimmungen:
    0
    Mit awk z.B. ...
    Etwas in der Art habe ich hier (Link) schonmal gepostet.
     
  7. xeeen

    xeeen Mitglied

    Dabei seit:
    24.04.2007
    Beiträge:
    32
    Zustimmungen:
    0
    danke erstmal. mein ansatz ist nun aber ein 'einfacherer':

    Code:
    #!/bin/bash
    
    Addr=(`cat addresses | grep @isp.com`)
    
    Quan=`cat addresses | wc -l`
    i=0
    
    while [ $i -le $Quan ]
    
    do
    
    echo ${Addr[$i]}
    i=`expr $i + 1`
    
    done
    
    soweit, sogut. funzt.

    nun würde mich allerdings interessieren, ob ich gezielt eine bestimmte stelle im array ansprechen kann, z.b. der 3te "eintrag" im array, ohne diesen explizit zu definieren, also nicht mit

    Code:
    echo ${Addr[2]}
    
    sondern eben irgendwie... automatisch. :think:
     
  8. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    2 mal UUOC.
     
  9. #8 angelsfall, 17.09.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Du willst etwas gezielt adressieren, ohne ein Ziel anzugeben? Erklär mal :-)
     
  10. xeeen

    xeeen Mitglied

    Dabei seit:
    24.04.2007
    Beiträge:
    32
    Zustimmungen:
    0
    naja, ich kann ja zb. nicht den 4ten eintrag wählen, wenn es diesen überhaupt nicht gibt, bzw. wie kann ich wissen, wie viele einträge es gibt?

    mein ziel ist es, hier an jede adresse eine mail zu versenden.

    brauche ich dazu einfach eine weitere for schleife?
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. #10 Wolfgang, 17.09.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    In der Manpage zur Bash steht alles über Arrays.
    Die Länge kannst du so feststellen:
    Code:
    A=(eins zwei drei); echo ${#A[*]}
    3
    
    Über ein Array iterieren:
    Code:
    for i in "${A[@]}"; do echo $i;done
    eins
    zwei
    drei
    
    Solche Dinge wie:
    Code:
    i=`expr $i + 1`
    
    Solltest du besser lassen, und das mindestens 10x schneller Buildin verwenden.
    Demonstration:
    Code:
    $ a=0;for i in {1..10}; do echo $a; ((a++));done
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Schau dir mal das hier als Vergleich an:
    Code:
    $ a=0; time for i in {1..10000}; do a=$(expr $a + 1 );done
    
    real  0m16.452s
    user  0m3.560s
    sys   0m12.893s
    wolle@Nietzsche:/tmp/video
    $ a=0; time for i in {1..10000}; do ((a++));done
    
    real  0m0.108s
    user  0m0.104s
    sys   0m0.004s
    
    Gruß Wolfgang
     
  13. xeeen

    xeeen Mitglied

    Dabei seit:
    24.04.2007
    Beiträge:
    32
    Zustimmungen:
    0
    danke, habt mir sehr geholfen!
     
Thema:

listenausgabe in array?

Die Seite wird geladen...

listenausgabe in array? - Ähnliche Themen

  1. Daten UND Betriebssystem, alles auf einem SW-RAID1-Array...?

    Daten UND Betriebssystem, alles auf einem SW-RAID1-Array...?: Hallo zusammen Wollte fragen wie man sowas macht, leider finde ich im Internet immer nur die Anleitungen wo davon ausgegangen wird dass eine sep....
  2. Php: User defined function inside array

    Php: User defined function inside array: Hi Alle, Ich habe ein Problem mit PHP: habe eine funktion definiert: function test($a1) {return($a1*5);}kann diese auch wie gewohnt als teil...
  3. bash: Fehlermeldung und Werte in Array sortieren?

    bash: Fehlermeldung und Werte in Array sortieren?: Hallo, ich probiere den ganzen Tag schon mir bestimmte Teile aus einer Riesentextdatei ausgeben und in mehrere kleine Dateien schreiben zu...
  4. Array mit Werte - die Leerzeichen beinhalten - abfüllen

    Array mit Werte - die Leerzeichen beinhalten - abfüllen: Hallo zusammen Bin neu hier und hab direkt eine Frage... Ich habe ein Befehl der mir einige Zeilen mit Werten ausgibt: Befehl:...
  5. RUBY tree_depth eines Arrays

    RUBY tree_depth eines Arrays: Hallo, ich habe da eine Aufgabe: Ich soll die Baumtiefe eines beliebig mehrdimensionalen Arrays bestimmen. Die Funktion soll so aussehen:...