KSH Variablen-Scope

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von ggekko33, 05.01.2007.

  1. #1 ggekko33, 05.01.2007
    ggekko33

    ggekko33 Grünschnabel

    Dabei seit:
    05.01.2007
    Beiträge:
    1
    Zustimmungen:
    0
    Ich habe ein Problem mit folgendem Skript, welches unter Linux
    (irgendwas mit Suse 8 Enterprise SMP...) nicht läuft, wie ich es erwarte:

    #########################
    #!/bin/ksh

    integer z=0
    ps -ef|while read
    do
    z=$z+1
    # ((z=$z+1))
    echo $z
    done
    echo ==$z==
    #########################

    es wird am Schluß immer ==0== angezeigt, die vorherigen Ausgaben
    zeigen brav das Inkrement an.
    Die angegebene Alternative funktioniert auch nicht.

    Unter Solaris funktioniert alles.

    Wer kann helfen?

    mfg
     
  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. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Hallo
    Bin mir jetzt nicht ganz sicher, aber ich würd sagen, die Pipe wird in einer Subshell ausgeführt, an die Variable aus der Subshell kommst du nicht so einfach...
    > http://www.cboltz.de/de/linux/bash/
    Gruss
    d22
     
  4. #3 Wolfgang, 05.01.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Mir ist nicht ganz klar, was du machen willst.
    Aber es ist so, dass while read in der Subshell ausgeführt wird, und somit die Variablen local bleiben.
    Auch erwartet read ja eine Variable.
    Wenn du die Zeilen zählen willst, kannst du auch mit wc arbeiten.
    Um globale Variablen zu setzen, musst du mit set arbeiten.

    Gruß Wolfgang
     
Thema:

KSH Variablen-Scope