Toon posts:

bash script variabelen & quotes probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een bash scriptje met daarin een variabele als volgt gedefinieerd (via grep, sed en awk uit een html file):

query=`INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES (\"123\",\"4321\",\"3232\",NOW());'

Vervolgens wil ik deze query runnen met:

mysql --user=$_user --password=$_password --database=$_database --execute=$query

Maar dit werkt niet :( Het heeft waarschijnlijk met quotes te maken, want als ik de mysql opdracht vanaf de bash promt execute met de $query variabele uitgeschreven tussen quotes, doet ie het wel...
Ik heb al allerlei quote varianten in het script geprobeerd, maar het wil niet lukken. Weet iemand hoe ik dat kan klussen ?

  • Baxlash
  • Registratie: Juni 2000
  • Niet online

Baxlash

Its a boy Genius!

Op donderdag 28 februari 2002 10:51 schreef vert het volgende:
ik heb een bash scriptje met daarin een variabele als volgt gedefinieerd (via grep, sed en awk uit een html file):

query=`INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES (\"123\",\"4321\",\"3232\",NOW());'

Vervolgens wil ik deze query runnen met:

mysql --user=$_user --password=$_password --database=$_database --execute=$query

Maar dit werkt niet :( Het heeft waarschijnlijk met quotes te maken, want als ik de mysql opdracht vanaf de bash promt execute met de $query variabele uitgeschreven tussen quotes, doet ie het wel...
Ik heb al allerlei quote varianten in het script geprobeerd, maar het wil niet lukken. Weet iemand hoe ik dat kan klussen ?
Mischien kan ik het ook fout hebben hoor, maar volgens mij hoef je die " niet te slashen.

kijk:
code:
1
query=`INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES (\"123\",\"4321\",\"3232\",NOW());'

je opent hem met ` en sluit hem met ` Alles wat er tussen staat mogen dus gewoon normaal met een " staan als het maar niet dezelde is als waarmee je de query opent (jaja vaag uitgelegd, het is nog vroeg)

Dus het mag volgens mij gewoon dit zijn:
code:
1
query=`INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES ("123","4321","3232",NOW());'

De code die jij geeft stuurt volgens mij dit door naar $query:
code:
1
INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES (\"123\",\"4321\",\"3232\",21312323);

Correct me if i'm wrong :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je moet niet met een ` beginnen :)
Dan probeert bash het te executen.

Doe gewoon es:
query="INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES ('123','4321','3232',NOW());"
?

Verwijderd

Topicstarter
hmm, ga ik proberen (zit nu op mn werk)
maar kan je die enkele quotes produceren met awk of sed?
das een beetje het probleem nl, die query wordt opgebouwd met een vrij lange serie grep, sed en awks... Waarschijnlijk onnodig ingewikkeld en onhandig, maar tis voor mij ook de eerste keer;) Dit is nl. hoe ik het produceer (niet lachen :+

query=`grep "||vert||" ut_stats.html | sed -e '/ngUID.*>/d' -e 's/<td class=r>/\\\"/' -e 's/<\/td><td class=r>.*<\/a><\/td><td class=r>/\\\" \\\"/' -e 's/<\/td>.*=r>/\\\" \\\\"/' -e 's/<\/td>/\\\"/' | awk -F" " '{ print "INSERT INTO UTweekly (ngUID, Rank, Rating, timestamp) VALUES (" $2 "," $1 "," $3 ",NOW());" }'`

De grep levert dit stukkie code aan uit de source van een html pagina(hopen dat pre nu werkt):
<PRE>
<span class=vv>||vert|| ngUID:4219610</span></td>
<tr>
<td class=y>6,924</td><td class=z><a href="/fcgi-bin/Display?gt=UT&gm=dm&uid=4219610&page=m&view=p" class=z>||vert||</a></td><td class=o> 4,219,610 </td><td class=o> 420.145 </td>
<td class=y nowrap>Deaths</td><td class=w>696</td><td class=w>1,077</td><td class=w>4,519</td>
<td class=y>58,123</td><td class=z><a href="/fcgi-bin/Display?gt=UT&gm=dm&uid=4219610&page=m&view=p" class=z>||vert||</a></td><td class=o> 4,219,610 </td><td class=o> 412.566 </td>
</tr>
</PRE>

Verwijderd

Topicstarter
Iemand die hierover misschien nog wat kan zeggen of toch nog wat te lachen heeft? Maar dan met uitleg? Ga zo naar huis om daar verder te prutsen, dus alle tips zijn welkom :)