Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Script mit Ebenen

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.10.2014
    Beiträge
    1

    Script mit Ebenen

    Hallo zusammen,

    ich benötige folgendes:

    Ich möchte ein Script haben (gerne Bash), welches eine TargetID und eine Ebenenzahl als Startwerte bekommt.

    Ich habe eine WebAPI, die wenn man ihr eine TargetID gibt einige weitere SourceIDs untereinander ausgibt (zwischen 0 und ziemlich vielen).

    Also z.B. so:
    Code:
    TargetID=1234
    curl -s http://domain.tld/$TargetID
    4847
    0584
    2894
    Die Source IDs können der API wiederum als TargetIDs gegeben werden. Das Script soll nun entsprechend der Ebenenzahl rekursiv die SourceIDs wieder als TargetIDs verwenden und mir am Ende eine Liste liefern in der SourceID und TargetID nebeneinander stehen und die Ebenen untereinander.
    Da zu jeder TargetID mehrere Source IDs existieren sieht das dann etwa so aus:
    Code:
    ##Ebene 1##
    4847 1234
    0584 1234
    2394 1234
    ##Ebene 2##
    7564 4847
    8473 4847
    2928 4847
    2011 0584
    2819 0584
    5873 0584
    1001 2394
    2004 2394
    ##Ebene 3##
    9827 7564
    ....
    Die ##Ebene## Platzhalter sind nur zum Verständnis.

    Mag mir jemand einen Hinweis geben, wie ich das möglichst geschickt umsetze? Meine Lösungsansätze sind irgendwie zu umständlich.

    Danke.

  2. #2
    Registrierter Benutzer Avatar von Selene
    Registriert seit
    26.08.2012
    Beiträge
    9
    Code:
    #!/bin/bash
    
    TargetID=(1234)
    Level=3
    
    until ((Level--<=0))
    do
        for t in ${TargetID[*]}
        do
            Out=($(curl -s http://domain.tld/$t))
            for s in ${Out[*]}
            do
                echo $s $t
            done
            SourceID+=(${Out[*]})
        done
        TargetID=(${SourceID[*]})
        ((${#TargetID[*]}<=0)) && break
        SourceID=()
    done

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •