K.Bokov: Shell Variableninterpollation LINENO

Hallo Leute,

ich möchte in einem bash-Skript die Zeilennummer ausgeben:

  
#!/bin/sh  
ZEILE="==\$LINENO=="  
  
  
print $ZEILE  
print $ZEILE  

Diese Variante geht natürlich nicht...

Danke für die Tipps

  1. In "$LINENO" ist lediglich die Anzahl der Zeilen des gesamten Scripts gespeichert (vgl. hier).

    Vielleicht hilft Dir ein externer Script-Debugger - besser ist es aber generell, einen Logging-Mechanismus zu verwenden (bspw. 'echo "Fehler in Funktion xy: z konnte nicht bearbeitet werden" | logger' verwendet Syslog, sofern vorhanden).

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. In der Variable $LINENO steht dann die Zeilenummer, inder diese Variable verwendet wird. Getestet, glaub mir. ;)

    2. Hallo,

      In "$LINENO" ist lediglich die Anzahl der Zeilen des gesamten Scripts gespeichert (vgl. hier).

      ziemlich miese Übersetzung von

      <zitat>
       `LINENO'
            The line number in the script or shell function currently
            executing.
      </zitat>

      aus info bash, Abschnitt Variablen.

      die Variable enthält in der Tat die aktuelle abgearbeitete Zeilennummer.

      Der gute OP nahm wohl an, mit seiner Zuweisung eine Referenz auf die Bash-Variable zu bekommen :-) Warum er die bequeme vorhandene Variable nicht nutzen will, ist mir schleierhaft (es gibt schließlich Funktionen, die die gewünschte Formatierung übernehmen könnten).

      Freundliche Grüße

      Vinzenz

  2. Hallo,

    ich möchte in einem bash-Skript die Zeilennummer ausgeben:

    #!/bin/sh

    Was soll die folgende Zeile bewirken?

    ZEILE="==$LINENO=="

    Welchen Inhalt erwartest Du in der Variablen $ZEILE

    print $ZEILE

    Welchen Inhalt erwartest Du jetzt in der Variablen $ZEILE
    Was möchtest Du mit der Anweisung print hier bewirken?

    print $ZEILE

    Welchen Inhalt erwartest Du jetzt in der Variablen $ZEILE

    
    >   
    > Diese Variante geht natürlich nicht...  
      
    Welche Ausgabe erwartest Du?  
    Welche Ausgabe erhältst Du?  
      
      
    ~~~shell
      
    #!/bin/bash  
    # /bin/sh verweist bei mir *nicht* auf bash :-)  
      
    # Für Ausgaben nutze das eingebaute Kommando echo  
    # Nein, das ist nicht äquivalent zu print  
    echo $LINENO    # gibt 6 aus.  
    ZEILE=$LINENO   # $ZEILE enthält nun 7.  
    echo $ZEILE     # gibt 7 aus.  
    echo $ZEILE     # gibt immer noch 7 aus.  
    echo $LINENO    # gibt 10 aus.  
    
    

    Wie wäre es, wenn Du mit deb allgemeinen Grundlagen der Programmierung anfängst?

    Freundliche Grüße

    Vinzenz

    1. Wie wäre es, wenn Du mit deb allgemeinen Grundlagen der Programmierung anfängst?

      ;) du bist einer... ;)

      /bin/sh könnte auch ein Link sein. Den Rest ersarre ixch mir. Ich glaube es nicht...

      Die Frage war doch eindeutig: wie bekomme ich die Zeilennummer.