Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Od wczoraj walczę z podłączeniem się do MySQL i wydanie polecenia SELECT w bash.
Mam bazę danych z takimi polami
id_pracownik
imie
nazwisko
dt_urodzenia
uzytkownik
haslo
dt_rozpoczecia
dt_zakonczenia
itd...
Tamto wszystko działa na PHP i MySQL. Po przyjęciu nowego pracownika dane trafiają do bazy.
Chciałbym zrobić skrypcik który co 24h podłączy się do MySQL sprawdzi czy nie ma nowego pracownika i jeśli go znajdzie
doda mu konto do serwerka i doda pocztę.
Mam problem z pobraniem danych za pomocą bash
Będę wdzięczny za pomoc lub linka gdzie można znaleźć takowe informację
Pozdrawiam
Redelek
Offline
echo "SELECT * FROM ..." | mysql | awk '...' | while read u fn ...; do ... done
Offline
bercik napisał(-a):
Kod:
echo "SELECT * FROM ..." | mysql | awk '...' | while read u fn ...; do ... done
oooo dzięki o to chodziło.
Jeszce podpowiedź jak możesz jak pozbyć się nazwy pól z tabeli. Jak daję select to pokazuje mi najpierw pola a potem dopiero dane ?
Dzięki i tak już za wielką pomoc
OKI ZNALAZŁEM --skip-column-name
Pozdrawiam
Redelek
Ostatnio edytowany przez redelek (2008-11-25 12:10:22)
Offline
No to prawie wszystko działa, problem jest w tym że po pobraniu danych z bazy są zapisywane do pliku.
Pętla która to robi wygląda tak
if [ $LICZNIK != 0 ];then for i in $RESULT; do echo $i >> nu.tmp done else echo "Kupa" fi
Dane w pliku tak :(
test1
haslotest1
test2
haslotest2
test3
haslotest3
Jak dodam do
echo -n $i
to wszystko zapisuje mi się w jednej lini.
test1haslotest1test2haslotest2 ..idt
Macie pomysł jak to zapisać
test1 haslotest1
test2 haslotest2
test3 haslotest3
Będę bardzo zobowiązany za pomoc :)
Redelek
Ostatnio edytowany przez redelek (2008-11-25 14:01:14)
Offline
np. analogicznie do tego:
#!/bin/sh FOO=0 for BAR in $@; do echo -n "$BAR " >> /tmp/plik if [ $FOO -eq 1 ]; then echo >> /tmp/plik && FOO=0 else FOO=$((FOO + 1)) fi done
Offline
azhag napisał(-a):
np. analogicznie do tego:
Kod:
#!/bin/sh FOO=0 for BAR in $@; do echo -n "$BAR " >> /tmp/plik if [ $FOO -eq 1 ]; then echo >> /tmp/plik && FOO=0 else FOO=$((FOO + 1)) fi done
Oki załapałem dzięki :)
Ostatnio edytowany przez redelek (2008-11-25 14:30:55)
Offline
Podłącze się, gdyż mam podobny choć troszkę inny problem
tab=$(echo "SELECT * FROM tabela" | mysql -D ${db} -u ${user} -p${pass} | sed -e '1d' )
Mam zapytanie, które zwraca mi wynik w formie tabeli (x wierszy y kolumn).
Wszystko ładnie działa tylko wynik zmiennej jest w jednym ciągu znaków oddzielony spacjami.
Jak przerobić to zapytanie by podstawił mi wynik do tabeli, coś ala:
tab[0][0] = 1 wiersz 1 komórka itd....
podejrzewam ze to coś z tym związane
awk '...' | while read u fn ...; do ... done
ale w tym problem że w bashu orłem nie jestem i te "..." nie przemawiają do mnie :D
Może ktoś podać pełny przykład jak ma to wyglądać ??
Offline
wypisujesz ta zmienna poprzez:
echo $tab
a jak wypiszesz poprzez
echo "$tab"
to bedziesz mial tak jak chcesz ...
pelny przyklad ciezko podac nie wiedzac co ma robic i jakie jest zapytanie et, etc ... radze poczytac o awk - http://www.opcode.eu.org/awk/ (zajrzyj tez w podlinkowania) i bashu - http://www.opcode.eu.org/bash/
Ostatnio edytowany przez bercik (2009-01-07 19:59:03)
Offline