[gelöst] Perlscript - Variable in awk

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

[gelöst] Perlscript - Variable in awk

Beitrag von sunghost » 12.10.2013 20:53:41

Hallo,

ich habe ein kleines Perlscript und dort folgende Zeile und Wheezy:
values .= @array[0].":".int(`smartctl -A @array[1] | awk -v pattern=$smartname '$0 ~ pattern {print \$4}'`);
Hier geht es um die Variable $smartname. Egal wie ich es drehe oder schreibe, ich finde keine Lösung, dass die Variable übernommen wird. Schreibe ich den Text. z.B. /text/, dann klappt es. Idee?

danke
Zuletzt geändert von sunghost am 12.10.2013 23:14:06, insgesamt 2-mal geändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Perscript - Variable in awk

Beitrag von Cae » 12.10.2013 21:54:07

Guck' mal, ob das Absicht ist, dass $0 nicht escapt ist, aber \$4 schon. Das ist in derselben "Quoting-Tiefe" und aus awk-Sicht gleichartig (nicht) zu escapen, damit's funktioniert. $smartname scheint ja 'ne Perl-Variable zu sein, dann wuerde $0 auch expandiert von Perl expandiert werden anstatt vom awk.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: Perscript - Variable in awk

Beitrag von sunghost » 12.10.2013 22:05:43

Hey Cae du bist der Beste ;).

Logisch - das war der Fehler, auch wenn ich das mit der Quoting-Tiefe und dem expandieren nicht verstehe ;) Jedenfalls hast du mir in ein paar Minuten geholfen, was ich gestern Abend in 2h nicht gefunden habe ,).

Nice WE
sunny

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Perscript - Variable in awk

Beitrag von Cae » 12.10.2013 23:07:59

sunghost hat geschrieben:auch wenn ich das mit der Quoting-Tiefe und dem expandieren nicht verstehe ;)
Expandieren meint: $foo wird zu bar ersetzt. Mit "Quoting-Tiefe" meine ich die Verschachtelung der (unterschiedlichen) Anfuehrungszeichen:

Code: Alles auswählen

                        +-----------+
                        |+----------|-+
                        ||      +---|-|-+
                        vv      v   | | |
f00="$(bar 'baz "foo bar"' boom)";  | | |
    ^      ^    ^                   | | |
    |      |    +--- 3. Tiefe ------+ | |
    |      +-------- 2. Tiefe --------+ |
    +--------------- 1. Tiefe ----------+
bar sieht die beiden Argumente baz "foo bar" und boom, weil die 1. Quoting-Tiefe von der laufenden Shell und die 2. Quoting-Tiefe von der Subshell $() gefressen wird. baz und foo waeren nicht in der gleichen "Quoting-Tiefe", anders als das $0 und \$4 oben.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

sunghost
Beiträge: 794
Registriert: 27.10.2004 18:55:14

Re: [gelöst] Perlscript - Variable in awk

Beitrag von sunghost » 12.10.2013 23:15:43

Ach so meinst du das ;). Vielen Dank für die Erklärung.

Gruß
sunny

Antworten