Ergebnis einer SQL Abfrage in Shellscript nutzen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
frindly
Beiträge: 1085
Registriert: 23.10.2007 08:13:26
Wohnort: Recklinghausen

Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von frindly » 02.07.2013 23:22:07

Hallo
ich möchte gerne das Ergebnis einer SQL Abfrage in einem Shell Script nutzen.
Mein Script sieht so aus:

Code: Alles auswählen

#!/bin/bash
myVar=$(echo "SELECT sendungsnummer FROM bestellungen where id=40170" | mysql -u xxx -pxxx -P 111 datenbank)
echo "Variable:"
echo "$myVar"
Als Ergebnis kommt immer:

sendungsnummer
8

Das heisst immer noch die Überschrift der Spalte mit dazu.
Wie bekomme ich das hin, das nur die 8 in der Variable landet???

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von linuxCowboy » 03.07.2013 00:37:51

z.B. so:

Code: Alles auswählen

echo $myVar | sed -r 's/.*([0-9]+)$/\1/'
Du kannst natürlich schon bei der Zuweisung filtern.
Zuletzt geändert von linuxCowboy am 04.07.2013 11:34:43, insgesamt 1-mal geändert.
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
goeb
Beiträge: 348
Registriert: 26.08.2006 18:12:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von goeb » 03.07.2013 00:56:19

Oder du schaust mal in die Dokumentation, würde mich wundern wenn es keine Option gäbe mit der man den Tabellenkopf abschalten kann.

Benutzeravatar
Phineas
Beiträge: 354
Registriert: 20.06.2012 20:26:19

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von Phineas » 03.07.2013 16:24:19

Code: Alles auswählen

myArray=($(echo "SELECT sendungsnummer FROM bestellungen where id=40170" | mysql -u xxx -pxxx -P 111 datenbank))
echo "${myArray[1]}"

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

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von Cae » 03.07.2013 16:29:22

Phineas hat geschrieben:

Code: Alles auswählen

myArray=($(echo "SELECT sendungsnummer FROM bestellungen where id=40170" | mysql -u xxx -pxxx -P 111 datenbank))
echo "${myArray[1]}"
Das ist bash-only:

Code: Alles auswählen

$ foo=(bar baz)
sh: 1: Syntax error: "(" unexpected
Die korrekte Loesung sollte die von goeb sein, naemlich, die stoerende Zeile erst gar nicht entstehen zu lassen. Falls das nicht moeglich sein sollte, wuerde ich als Workaround etwas wie

Code: Alles auswählen

var="$(echo ... | mysql ... | grep -v '^sendungsnummer$')"
verwenden und die Zeile einfach rausfiltern.

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

Benutzeravatar
Phineas
Beiträge: 354
Registriert: 20.06.2012 20:26:19

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von Phineas » 03.07.2013 16:34:42

Cae hat geschrieben:Das ist bash-only
Ist mir nicht entgangen:
frindly hat geschrieben:

Code: Alles auswählen

#!/bin/bash
...

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

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von Cae » 03.07.2013 17:01:45

Phineas hat geschrieben:Ist mir nicht entgangen:
frindly hat geschrieben:

Code: Alles auswählen

#!/bin/bash
...
... mir allerdings schon. Okay. ;)

Fuer die Zeilen braucht man aber keine fettere Bash, eigentlich. Fragt sich, ob der zusaetlichzliche fork() fuer grep effizienter ist.

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

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von linuxCowboy » 04.07.2013 00:15:10

mit Anführungszeichen bleibt das newline drin:

Code: Alles auswählen

~$ echo "sendung\n8"
sendung
8
dann geht auch:

Code: Alles auswählen

~$ echo "sendung\n8" | sed 1d
8
PS: Ich liebe die Bash! :)
Zuletzt geändert von linuxCowboy am 04.07.2013 11:28:44, insgesamt 1-mal geändert.
-der_linux_cowboy --- Besser werden! ... f*** w$$

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

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von Cae » 04.07.2013 05:15:38

linuxCowboy hat geschrieben:

Code: Alles auswählen

~$ e "se ...
Tu' doch bitte bei sowas die drei weiteren Buchstaben "cho" noch mit dazu, wenn nicht gerade die Zeile mit'm Alias oben drueber steht. Das irritiert ein bisschen, auch wenn darauf in deiner Signatur hingewiesen wird. Ich kann diese Kommandozeile auch nicht einfach in meine Shell kopieren und gucken, ob bei mir dasselbe rauskommt. Ausserdem gibt's einen Haufen komischer Leute, die sich e auf emacs gealiast haben...

Fuer den interaktiven Gebrauch spart das bestimmt eine Anzahl Tastendruecke, sofern man gerade an einer entsprechend geconften Maschine sitzt. ;)

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

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Ergebnis einer SQL Abfrage in Shellscript nutzen

Beitrag von linuxCowboy » 04.07.2013 11:28:09

Das emacs-Argument überzeugt mich. Stallman ist cool!
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten