Page 1 of 1

Dateinamen aus find zueisen

Posted: 2007-11-20 14:41
by buddelflink
Hi,
hab ein (vermutlich triviales) Problem und knoble mich zu Tode :(
Aus einem find wird ein Dateiname ermittelt, der einer Variablen zugewiesen werden soll. Der Name der Datei wird auch richtig erfasst, nur bei der weiteren Verarbeitung zeigt sich, dass die Datei leer ist, bzw. nicht mit der Datei operiert wird.

Code: Select all

DBBACKUPFILE= find -iname "`date +DB_%Y%m%d`.sql"
echo $DBBACKUPFILE      #geht, Anzeige ist richtig ./DB_20071120.sql
cat $DBBACKUPFILE         # geht nicht! $DBBACKUPFILE ist eine leere Datei ???! (natürlich nicht, die datei ist ok)
mysql -h $DBHOST -u $DBUSER --password=$DBPWD < $DBBACKUPFILE  #geht dann eben leider auch nich
Muss da irgenwas maskiert werden?! Freu mich über jede Idee :)

edit:

Code: Select all

DBBACKUPFILE= `find -iname "`date +DB_aromat_ayah_%Y%m%d`.sql"`
tut's leider auch nicht :(

Re: Dateinamen aus find zueisen

Posted: 2007-11-20 16:30
by mascha
Huhu buddelflink,

da ist m.E. ein Leerzeichen zu viel in der Variablenzuweisung. In Bash-Scripts darf zwischen Variable und Wert nur das =-Zeichen stehen. Keinesfalls ein Leerzeichen.

Falsch:
DBBACKUPFILE= find -iname "`date +DB_%Y%m%d`.sql"

Richtig:
DBBACKUPFILE=find -iname "`date +DB_%Y%m%d`.sql"

Re: Dateinamen aus find zueisen

Posted: 2007-11-20 16:34
by buddelflink
nützt leider nix :( aber danke für's mitgrübeln :)

Re: Dateinamen aus find zueisen

Posted: 2007-11-20 17:00
by oxygen
Hast du vielleicht Teile des Scripts weggelassen und bei der Ausführung befindet es sich im falschen Ordner? bedenke, ./DB_20071120.sql ist ein relativer Dateiname.

Re: Dateinamen aus find zueisen

Posted: 2007-11-20 17:22
by mascha
OK - noch mal nachgedacht:

Folgendes funktioniert bei mir:

VARIABLE=`find -iname ''*'z.html'`

Probier mal.

M.

Re: Dateinamen aus find zueisen

Posted: 2007-11-20 18:04
by Roger Wilco
Wenn die Bash als Interpreter genutzt wird:

Code: Select all

DBBACKUPFILE=$(find -iname "$(date +DB_%Y%m%d).sql)"
Du solltest aber bedenken, dass find ggf. mehr als 1 Dateinamen zurückliefert.

Würde es nicht auch folgendes tun:

Code: Select all

DBBACKUPFILE=$(ls `date +DB_%Y%m%d`.sql)

Re: Dateinamen aus find zueisen

Posted: 2007-11-20 18:09
by juergen
Hm, das geht auch einfacher:

Code: Select all


find -iname "`date +DB_aromat_ayah_%Y%m%d`.sql" -execdir mysql -u root -e source {} ;
PS: Passwort besser nicht auf der Kommandozeile spezifierzieren, sondern in der my.cnf.

Re: Dateinamen aus find zueisen

Posted: 2007-11-21 09:15
by buddelflink
Vielen Dank an alle :)
...und der Gewinner ist $(...)
Wenn unser Prof. K. wüsste, dass ich dies nur ein halbes Dutzend Jahre nach seiner Grundlagenvorlesung nicht mehr wusste, dann müsste ich jetzt sicher das AIX-Labor schrubben.:-$