Shell Variableninterpollation LINENO
K.Bokov
- programmiertechnik
0 LX0 K.Bokov0 Vinzenz Mai
0 Vinzenz Mai0 K.Bokov
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
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
In der Variable $LINENO steht dann die Zeilenummer, inder diese Variable verwendet wird. Getestet, glaub mir. ;)
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
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
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.