# Liste von Dateinamen mit Shell-Script



## thefaxx (23. März 2009)

Hi,

ich möchte via Shell-Script alle PHP-Dateien in einem bestimmten Verzeichnis auf meinem Server ausführen.

So habe ich es versucht:

```
#!/bin/sh
foreach filename in /var/www/domain.de/httpdocs/php/*
do
  wget http://www.domain.de/$filename > /dev/null
done;
```

Problem ist, dass in der Variable $filename der gesamte Pfad zur Datei gespeichert wird und nicht nur der Dateiname. Wie kann ich das verhindern bzw. was gibt es noch für Möglichkeiten?


----------



## Dennis Wronka (23. März 2009)

Du koenntest sowas machen:

```
#!/bin/sh
pushd /var/www/domain.de/httpdocs/php/
foreach filename in *
do
  wget http://www.domain.de/$filename > /dev/null
done;
popd
```
pushd ist cd recht aehnlich. Jedoch haelt es in einem Stack fest durch welche es wechselt. Mit popd (siehe Ende des Scripts) kannst Du dann wieder zurueckkehren wo Du herkamst, ohne wissen zu muessen wo das war.


----------



## thefaxx (23. März 2009)

Funktioniert schon mal super vielen Dank.
Wenn ich mir die Zeilen mit echo ausgeben lassen, zeigt er allerdings auch den Pfad an den er mit pushd aufgerufen hat. Lässt sich die Ausgabe unterdrücken?

Das gibt er mir aus:

```
/var/www/domain.de/php/  /var/www/domain.de/
http://www.domain.de/php/test1.php
http://www.domain.de/php/test2.php
/var/www/domain.de/
```


----------



## Dennis Wronka (23. März 2009)

Haeng einfach *> /dev/null* hinter pushd und popd, dann wird diese Ausgabe in's Nirwana geschickt.


----------



## thefaxx (23. März 2009)

Super genial. Danke dir!

Jetzt ist mir doch noch was aufgefallen.
Wenn die Dateien mit dem Script aufgerufen werden, wird eine Datei mit dem gleichen 
Dateinamen erzeugt und die Endung wird mit .1 erweitert. Also z.B. test1.php.1.
Woran könnte das liegen?


----------



## deepthroat (2. April 2009)

thefaxx hat gesagt.:


> Super genial. Danke dir!
> 
> Jetzt ist mir doch noch was aufgefallen.
> Wenn die Dateien mit dem Script aufgerufen werden, wird eine Datei mit dem gleichen
> ...


Das liegt einfach an der Arbeitsweise von wget. Du mußt wget einfach mit den richtigen Optionen aufrufen - siehe man wget.

Wenn du die PHP Skripte nur ausführen und nicht runterladen willst, dann verwende einfach die Option -O /dev/null.

Gruß


----------

