MySQL-Abfrage an Variable übergeben

M

mojorianer

Grünschnabel
Hallo,

ich möchte die Ausgabe einer MySQL-Anfrage zeilenweise auswerten und die darin enthaltenen Werte in ein Template schreiben und gegen bestimmte Platzhalter austauschen.
Mein Problem ist, dass ich die Werte aus der Anfrage nicht richtig in eine Variable bekomme.

Das Template /root/template

Code:
Host: platzhalter1
Service: platzhalter2
Zeit: platzhalter3

Und das Bash-Skript

Code:
#!/bin/bash

mysql -uroot -pGeheim otrs < /root/query

while read line   
do   
    echo $line | awk -F\| '{print $1,$2,$3}'
	sed -e 's/platzhalter1/$1/g' -e 's/platzhalter2/$2/g' -e 's/platzhalter3/$3/g' /root/template > /root/temp1

done < /tmp/ergebnis

Die MySQL Anfrage /root/ergebnis

Code:
wertX|wertY|wertZ
wertA|wertB|wertC

Im File /root/temp1 steht nach dem Ausführen immer $1,$2 bzw. $3 und nicht der Inhalt dieser Variablen.

Wenn ich die Anweisung
Code:
sed -e 's/platzhalter1/$1/g'
in
Code:
sed -e "s/platzhalter1/$1/g"
ändere, werden die platzhaler1 bis 3 einfach gelöscht.

Vielleicht hat einer einen Vorschlag.

Vielen Dank
 
Zuletzt bearbeitet:
Jetzt läufts.

Die awk-Feldvariablen $1,$2,... haben nichts mit den Positionsparametern $1, $2, ... der Shell zu tun.
Die Shell-Positionsparameter kann man aber mit "set" explizit zuweisen. Das awk-Statement wird einfach in eine Kommandosubstitution $() verpackt:

Code: Alles auswählen
while read line
do
set -- $(echo $line | awk -F\| '{print $1,$2,$3}')
sed -e "s/platzhalter1/$1/g" -e "s/platzhalter2/$2/g" -e "s/platzhalter3/$3/g" /root/template >> /root/temp1

done < /tmp/ergebnis
 

Ähnliche Themen

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Inhalt einer Variablen aus Batch an Shellscript übergeben

Bash Skript: [[: not found Fehler

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Zurück
Oben