Dateinamen aus find zueisen

Bash, Shell, PHP, Python, Perl, CGI
buddelflink
Posts: 10
Joined: 2007-03-15 21:30

Dateinamen aus find zueisen

Post by buddelflink » 2007-11-20 14:41

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 :(

mascha
Posts: 22
Joined: 2003-11-07 15:01

Re: Dateinamen aus find zueisen

Post by mascha » 2007-11-20 16:30

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"

buddelflink
Posts: 10
Joined: 2007-03-15 21:30

Re: Dateinamen aus find zueisen

Post by buddelflink » 2007-11-20 16:34

nützt leider nix :( aber danke für's mitgrübeln :)

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Dateinamen aus find zueisen

Post by oxygen » 2007-11-20 17:00

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.

mascha
Posts: 22
Joined: 2003-11-07 15:01

Re: Dateinamen aus find zueisen

Post by mascha » 2007-11-20 17:22

OK - noch mal nachgedacht:

Folgendes funktioniert bei mir:

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

Probier mal.

M.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Dateinamen aus find zueisen

Post by Roger Wilco » 2007-11-20 18:04

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)

juergen
Posts: 133
Joined: 2004-03-30 14:44

Re: Dateinamen aus find zueisen

Post by juergen » 2007-11-20 18:09

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.

buddelflink
Posts: 10
Joined: 2007-03-15 21:30

Re: Dateinamen aus find zueisen

Post by buddelflink » 2007-11-21 09:15

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.:-$