[freebsd]commando werkt wel in de shell maar niet in een sh

Pagina: 1
Acties:

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 03-01 01:51
ik heb een commando om alle mysql databases te dumpen met de naam van de database:


code:
1
2
mysqlshow -u admin --password=secret | grep '^|'|grep -v Databases | cut -f 2 -d ' ' |
 awk '{ print mysqldump -u admin --password=secret " $1 " > " $1 ".sql" }' | sh


*ik heb voor "awk" een enter gedaan voor de layout maar in de code heb ik dat dus niet

werkt prima als ik het rechtstreeks (=1regel) intype in de shell

maaaaar

als ik het nou in een bestand zet en het run met sh dan krijg ik de foutmelding:
$databasenaam: not found
waarin $databasenaam de naam van de database is, dit voor elke database.

hoe kan het nou dat het wel werkt als ik het rechstreeks in type, maar niet als ik het als een scriptje run?


ps ben wel een n00b op dit gebiedt dus als het iets dom is sorry maar ik zie het echt niet :?

[ Voor 11% gewijzigd door FireFoz op 19-03-2004 16:36 ]

Leef lekker in het nu, er is niks anders


  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Laat anders eens dat stukje zien wat niet werkt, script die't prima doen hebben we allemaal op onze eigen systemen al. :+

\edit: en fix de layout aub. dit leest zwaar onhandig zo.

[ Voor 23% gewijzigd door sebas op 19-03-2004 16:31 ]

Everyone complains of his memory, no one of his judgement.


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 03-01 01:51
sebas schreef op 19 maart 2004 @ 16:31:
Laat anders eens dat stukje zien wat niet werkt, script die't prima doen hebben we allemaal op onze eigen systemen al. :+

\edit: en fix de layout aub. dit leest zwaar onhandig zo.
ik snap niet zo goed wat je bedoeld :?

Het werkt goed als ik het in de shell type/copy paste, maar dus niet als ik het in een shell script copieer en run als "sh backup.sh"

Leef lekker in het nu, er is niks anders


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 20-02 23:48

JaQ

over het algemeen heeft dit te maken met paden. misschien maar eens een path meegeven aan mysqldump ?

Egoist: A person of low taste, more interested in themselves than in me


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 03-01 01:51
DrFrankenstoner schreef op 19 maart 2004 @ 16:39:
over het algemeen heeft dit te maken met paden. misschien maar eens een path meegeven aan mysqldump ?
Die staan er oorspronkelijk in, had ik nu alleen even weg gehaald voor duidelijkheid :)

Is dus niet de oplossing :/

Ik denk dat het iets is met escapen oid ik heb al geprobeerd die $1 te escapen door er een \ voor te zetten maar dan krijg ik weer de foutmelding dat \$ niet het laatse karakter in de line is :/


aaaaaaaaaargh ik heb het al 8)7 8)7 8)7 8)7

putty had de line WEL gesplit toen ik hem er in copy/paste |:(

het werkt dus nu :+


sorry |:( |:(

[ Voor 13% gewijzigd door FireFoz op 19-03-2004 16:46 ]

Leef lekker in het nu, er is niks anders


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 20-02 14:16

Kees

Serveradmin / BOFH / DoC
code:
1
2
dbs=`mysqlshow -uadmin -p"secret" | egrep -v "Databases|-" | tr -s ' ' | cut -d' ' -f2`
for db in $dbs; do mysqldump -uadmin -p"secret" ${db} > ${db}.sql; done

Werkt ook ;)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
FireFoz schreef op 19 maart 2004 @ 16:38:
ik snap niet zo goed wat je bedoeld :?

Het werkt goed als ik het in de shell type/copy paste, maar dus niet als ik het in een shell script copieer en run als "sh backup.sh"
Wat ik bedoel is dat je even precies je script hier paste, dus dat stukje ascii wat bij jou niet werkt. Dan kunnen meer mensen erna kijken.

In dit geval heb je met een niet goed ingestelde environment te maken, sh backup_blaat.sh werkt niet, maar werkt het bijvoorbeeld als je je script gaat sourcen, door middel van
. backup_blaat.sh
Als je het met sh ... opstart wordt er een nieuwe shell gestart, die heeft wellicht de env vars anders gezet (vergelijk met 'env'). Hierbij horen paden, maar eventueel dus ook de inhoud van $database. Ik zie trouwens helemaal nergens dat je die var gebruikt, dus waar komt die foutmelding überhaupt vandaan?

Everyone complains of his memory, no one of his judgement.


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 03-01 01:51
Het werkt nu, maar heb er een ander probleem bij :)


code:
1
2
3
/usr/local/psa/mysql/bin/mysqlshow -u admin --password=pass | grep '^|'|grep -v 
Databases | cut -f 2 -d ' ' | awk '{ print "/usr/local/psa/mysql/bin/mysqldump -u 
admin --password=pass " $1 " > " $1 ".sql" }' | sh



werkt, maar nou wil ik er de dagnaam van vandaag bij gooien, dus (voor vandaag) Friday-databasenaam.sql

nou, ik dacht:

code:
1
2
3
4
5
6
7
#!/bin/bash

tijd=`date +%A`

/usr/local/psa/mysql/bin/mysqlshow -u admin --password=pass | grep '^|'|grep -v 
Databases | cut -f 2 -d ' ' | awk '{ print "/usr/local/psa/mysql/bin/mysqldump -u 
admin --password=pass " $1 " > " $tijd "-" $1 ".sql" }' | sh


maar nou krijg ik dus databasenaam-databasenaam.sql 8)7

code:
1
2
3
/usr/local/psa/mysql/bin/mysqlshow -u admin --password=pass | grep '^|'|grep -v 
Databases | cut -f 2 -d ' ' | awk '{ print "/usr/local/psa/mysql/bin/mysqldump -u 
admin --password=pass " $1 " > " `date +%A` "-" $1 ".sql" }' | sh


kan ook niet :/

[ Voor 54% gewijzigd door FireFoz op 19-03-2004 19:37 ]

Leef lekker in het nu, er is niks anders


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 03-01 01:51
niemand? Ik heb echt alles geprobeerd 8)7

Leef lekker in het nu, er is niks anders

Pagina: 1