Variablen per Schleife an externes Skript übergeben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Jan S., 13.02.2009.

  1. Jan S.

    Jan S. Grünschnabel

    Dabei seit:
    11.02.2009
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo zusammen!

    Ich arbeite mit bash und habe ein kleines Skript erzeugt, das mir Variablen erzeugt, die folgendermaßen aussehen: rem[1]="0,5467"
    die zahlen in [] werden dabei hochgezählt.
    Jetzt möchte ich aber diese Variablen an ein externes Skript weitergeben...und zwar eine nach der anderen.
    Das externe Skript frisst die Zahlen als $1.
    sprich p.interpol 0,5467 $2 $3

    bis jetzt sieht es folgendermaßen aus:

    for file in cu*
    do
    echo $file
    cd $file

    ### Counter für einzelne REM-Messpunkte
    unset counter
    while read information rest; do
    (( counter++ ))
    rem[$counter]="$information"
    done < remwerte_$file
    echo "Variablen rem[1-$counter] gesetzt."

    ### Zur Ueberpruefung Ausgabe der Variablen:
    for (( newcounter=1; newcounter<=$counter; newcounter++ )); do
    echo "rem[$newcounter]=\"${rem[$newcounter]}\""

    done
    done

    Was ich allerdings als ziemlicher Anfänger nicht schaffe, ist es diese Variablen eine nach der anderen an p.interpol zu übergeben.

    Also sprich ich möchte folgendes automatisieren:
    p.interpol "rem[1]=0,5467"
    p.interpol "rem[2]=0,3716"
    p.interpol "rem[3]=0,1826"
    p.interpol "rem[4]=0,9732"

    usw... und das Ganze bis zum letzten rem[xx]...

    kann mir hier jemand helfen?!

    Vielen Dank!
     
  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. #2 Gott_in_schwarz, 16.02.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Du willst also ein array übergeben, hab ich das richtig verstanden?
    Solange es nur ein Array ist, geht das recht einfach. Man packt es einfach ans Ende der Argumentenliste und shiftet die Argumente davor weg:
    Code:
    $ cat father.sh 
    #!/bin/bash
    
    arr=( foo bar baz "blah mit leerzeichen" )
    
    ./child.sh einArgument "noch ein Argument" "${arr[@]}"
    
    $ cat child.sh 
    #!/bin/bash
    
    arg1=$1 && shift
    arg2=$1 && shift
    arr=( "$@" )
    
    echo "arg1 == $arg1, arg2 == $arg2"
    echo "arr == ${arr[@]}"
    
    for i in {0..100}; do
        [ "${arr[$i]}" ] && echo "arr[$i] == ${arr[$i]}"
    done
    
    $ ./father.sh 
    arg1 == einArgument, arg2 == noch ein Argument
    arr == foo bar baz blah mit leerzeichen
    arr[0] == foo
    arr[1] == bar
    arr[2] == baz
    arr[3] == blah mit leerzeichen
    Wichtig zu wissen ist, dass nicht vorhandene Elemente im father-Array die Reihenfolge child-Array im zerstören. Deswegen würde ich das array auch bei 0 anfangen.
    Consider:
    Code:
    $ cat uncle.sh 
    #!/bin/bash
    
    arr[1]=foo
    arr[5]="bar baz"
    
    ./child.sh einArgument "noch ein Argument" "${arr[@]}"
    
    $ ./uncle.sh 
    arg1 == einArgument, arg2 == noch ein Argument
    arr == foo bar baz
    arr[0] == foo
    arr[1] == bar baz
    Man kann natürlich einfach arr[0] auf einen leeren String setzen, damit würde das child-Array auch mit Index 1 beginnen, ist aber imho nicht so sinnvoll.

    Btw, arrays in bash sind hashes mit Integer-Keys. Deshalb werden die Values von nicht vorhandenen Keys natürlich nicht expandiert.
     
  4. Jan S.

    Jan S. Grünschnabel

    Dabei seit:
    11.02.2009
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo! "Gott"_in_schwarz trifft es denke ich ganz gut ;-)

    Vielen Dank für den Vorschlag! Bin gerade damit fertig geworden ein Skript zu schreiben, dass mir ein Skript schreibt. :D
    Ist in diesem Fall die einfachere Lösung, da das Skript dem die Variablen aus dem Array übergeben werden sollen bereits fertig ist und diese genau so vorportioniert übergeben werden können.

    Werde das aber bei Gelegenheit nochmal ausprobieren!

    Vielen Vielen Dank!
     
Thema:

Variablen per Schleife an externes Skript übergeben

Die Seite wird geladen...

Variablen per Schleife an externes Skript übergeben - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  3. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  4. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...
  5. Inhalt einer Variablen aus Batch an Shellscript übergeben

    Inhalt einer Variablen aus Batch an Shellscript übergeben: Hallo, ich komme einfach nicht drauf. Wie kann ich den Wert aus einer Variablen eines Batches an mein Shellscript übergeben? So? #...