Falsche Ausgabe von $LINENO

Diskutiere Falsche Ausgabe von $LINENO im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Moin zusammen, ich bin zwar kein absoluter Frischling mehr, was Linux angeht, aber erst seit wenigen Minuten in diesem Forum. Seit einigen Tagen...

  1. #1 Fingerhebel, 19.04.2020
    Zuletzt bearbeitet: 19.04.2020
    Fingerhebel

    Fingerhebel Grünschnabel

    Dabei seit:
    19.04.2020
    Beiträge:
    5
    Zustimmungen:
    0
    Moin zusammen,
    ich bin zwar kein absoluter Frischling mehr, was Linux angeht, aber erst seit wenigen Minuten in diesem Forum. Seit einigen Tagen beschaeftige ich mich mit der Shell-Programmierung. Ich verwende die BASH unter Linux Mint 19.3. Dazu habe ich mir das Buch "Shell-Programmierung - Das umfassende Handbuch" von S. Kania und J. Wolf gekauft. Ich bin noch am Anfang und auf ein Problem gestossen, bei dem ich euch um Hilfe bitte.

    Folgendes Script habe ich nach Buchanleitung geschrieben:

    #!/bin/sh

    # Script-Name: prozdat
    # Listet Prozessinformationen auf

    echo 'Anzahl lauferner Prozesse:'
    # ... wc -l zählt alle Zeilen die ps -ef ausgeben würde
    ps -ef | wc -l

    echo 'Prozessinformationen unserer Shell:'
    # ... die Shellvariable $$ enthält die eigene Prozessnummer
    ps $$


    Anschliessend wird das Script mit
    sh -x ./prozdat
    ausgefuehrt. Das funktioniert problemlos. Jede Kommandozeile wird mit einem Plus ausgegeben.

    Im Folgenden wird das Plus-Zeichen durch den Befehl
    export PS4="[Line: $LINENO] "
    ersetzt. Und das funktioniert leider nicht, denn anstatt die jeweilige Zeilennummer auszugeben, erscheint wahllos irgendeine, die fuer alle Zeilen gleich ist (siehe Anhang).

    Screenshot.png

    Ueber eine Loesung oder Anregung, warum die Zeilennummer so ausgegeben wird, wuerde ich mich freuen.

    Liebe Gruesse,

    Fingerhebel
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Fingerhebel, 20.04.2020
    Fingerhebel

    Fingerhebel Grünschnabel

    Dabei seit:
    19.04.2020
    Beiträge:
    5
    Zustimmungen:
    0
    Gibt es wirklich keinen Computer-Crack, der mir hier helfen kann?
     
  4. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.279
    Zustimmungen:
    21
    ohne größer drüber nachgedacht zu haben - siehe auch z.B. https://stackoverflow.com/questions...riable-content-in-loaded-exec-file-script-und - wird bei dem export PS4 PS4 1x statisch gesetzt - mit dem aktuellen Wert von $LINENO.

    Vermutlich müsste da irgendwas mit eval oder so rein - wobei ich aktuell an der Stelle nicht sagen kann, ob das dort geht (ich würde aber vermuten, daß - analog zu PS1 in den Beispielen z.B. mit pwd auf https://wiki.archlinux.de/title/Bash-Prompt_anpassen es auch mit PS4 gehen sollte)
     
  5. #4 Fingerhebel, 21.04.2020
    Fingerhebel

    Fingerhebel Grünschnabel

    Dabei seit:
    19.04.2020
    Beiträge:
    5
    Zustimmungen:
    0
    Moin marce,

    ich danke dir fuer deine Antwort. Leider sehe ich nicht, wie mir der "eval"-Befehl dabei helfen kann, bzw. an welcher Stelle ich ihn im Script verwenden sollte. Soweit ich es verstanden habe, kann "eval" benutzt werden, wenn zwei (oder mehrere) Kommandos zahlenmaessig entsprechenden Variablen zugeordnet werden und mittels Pipe (|) ausgefuehrt werden sollen. Das ist in dem Script aber nicht vorgesehen.

    Trotzdem danke ich dir fuer deine Antwort.

    Es piekt mich schon mittelschwer an, dass ein Fachbuch in der 6.(!) Auflage bei einem eigentlich simplen Beispiel solche Fehler beinhaltet... Mmmmmpf

    Gibt es sonst noch Ideen oder Vorschlaege?

    Ahoi
     
  6. #5 marce, 21.04.2020
    Zuletzt bearbeitet: 21.04.2020
    marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.279
    Zustimmungen:
    21
    den 2. Link hast Du Dir angeschaut? Bist dabei auf die Zeilen
    Code:
    PS1='`pwd` >'
    und
    Code:
    PS1=">\033[s\033[1;\$((COLUMNS-4))f\$(date +%H:%M)\033[u"
    gestoßen und hast das evtl. bei Dir entsprechend angepasst mal ausprobiert?
     
  7. #6 Fingerhebel, 21.04.2020
    Fingerhebel

    Fingerhebel Grünschnabel

    Dabei seit:
    19.04.2020
    Beiträge:
    5
    Zustimmungen:
    0
    Es tut mir Leid, aber ich sehe den Zusammenhang nicht. PS1 hat etwas mit dem Prompt zu tun. Ich moechte PS4 jedoch zum Debugging verwenden und ihr zwecks Uebersichtlichkeit einen Wert zuweisen, der mir die jeweilige Zeilennummer im Script ausgibt. Sorry, nenn mich daemlich, aber ich stehe auf dem Schlauch.

    Liebe Gruesse,
    Jan
     
  8. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.279
    Zustimmungen:
    21
    Ob Du PS1, PS4 oder eine Variable namens Fritz, Helga oder Fipsi bearbeitest dürfte eigentlich egal sein.
     
  9. #8 Fingerhebel, 21.04.2020
    Fingerhebel

    Fingerhebel Grünschnabel

    Dabei seit:
    19.04.2020
    Beiträge:
    5
    Zustimmungen:
    0
    Hehe, danke dir fuer den Hinweis. Dafuer reicht mein mathematisches Verstaendnis gerade noch aus. ;-)

    Was soll mir der Link und die dort beschriebenen Beispiele denn aufzeigen? Ich sehe die Verbindung zu meinem Problem nicht.

    Cheers
     
Thema:

Falsche Ausgabe von $LINENO

Die Seite wird geladen...

Falsche Ausgabe von $LINENO - Ähnliche Themen

  1. Falsche(?) Ausgabe von 'ifconfig'

    Falsche(?) Ausgabe von 'ifconfig': Hallo zusammen Ich habe ein Problem, das mich ein Bisschen verwirrt. Ich bin Netzwerktechnisch nicht sehr sattelfest, darum habe ich keine...
  2. Falsches Heimatverzeichnis in der Bash

    Falsches Heimatverzeichnis in der Bash: Hallo Leute, wenn ich ein Terminal öffne und mich via "su marcel" anmelde startet die Promt im /root verzeichnis. Gebe ich echo $HOME ein kommt...
  3. Per Samba falsche Angaben zum freien Speicherplatz übertragen

    Per Samba falsche Angaben zum freien Speicherplatz übertragen: Moin, ich habe ein altes Mainboard zu einem NAS umgebaut auf dem ein Ubuntu läuft. Ist kein spezielles NAS-System, es war halt nur drauf. An...
  4. Fehler in GCC kann falschen Kernel-Code erzeugen

    Fehler in GCC kann falschen Kernel-Code erzeugen: Linux-Kernel, die mit neueren Versionen von GCC erzeugt wurden, können sporadische Abstürze zeigen. Bisher dürften nur wenige Anwender betroffen...
  5. Samba 4.1.3 auf falschen Netzwerkinterface

    Samba 4.1.3 auf falschen Netzwerkinterface: Moin, moin, ich habe am Wochenende Samba4 installiert. Leider geht das nicht so wie ich mir das vorstelle. Mein Server hat zwei...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden