Hilfe...muss etwas lösen habe aber keine Unix Shell Script Kenntnisse!!!

M

MichaelK

Grünschnabel
Hallo,

Habe ein riesen Problem und kenne nichts von Unix Shell Scripts!!!

Hier der kleine Shell Script "Schlaufe.sh":
--------------------------------------------------
#!/bin/ksh

numfiles=100
file=$1

i=1
while [ $i -le $numfiles ]
do
/path1/path2/file.sh $file
i=`expr $i + 1`
echo "Schlaufe Anzahl: $1 - mit File $file"
done
--------------------------------------------------
Dieser Script macht folgendes: das Programm 'file.sh' wird 100mal mit parameter '$file' gestartet. '$file' ist aber immer gleich! Eigentlich führt dieser Script "Schlaufe.sh" 100 mal den Script 'file.sh' aus mit als parameter immer wieder den selben filename '$file'.

Ich müsste diesen Script aber so anpassen das 'file.sh' über 'Schlaufe.sh' so oft gestartet wird wie es Files in einem bestimmten Folder gibt.

Beispiel: gibt es 3 Files in Folder "/path1/path2/", dan müsste es möglich sein über "Schlaufe.sh" folgendes automatisch auszuführen:
file.sh file1
file.sh file2
file.sh file3

Leider habe ich keine Unix Shell Kenntnisse.

Könnte mir vielleicht jemand diesen Script 'Schlaufe.sh' so anpassen das er alle Files die in einem bestimmten folder sind mit 'file.sh' ausführt?

Besten Dank!

Michael
 
Moin, versuchs mal mit :

Code:
numfiles='ls -l | wc -l'
 
Hallo MichaelK

Bitte verwende ausdrucksvolle Titel. Fast jeder hier benoetigt "Hilfe", meistens wegen mangelnder "Kenntniss".

Zu deinem Problem:
zielverzeichniss=/home/benutzer
program=/bin/machwas

for datei in `ls $zielverzeichniss`; do
$program $datei
done

Das fuehrt das $program auf jede $datei im $zielverzeichniss aus. Ist das in etwa was du suchst?
 
so bekommst du die dateinamen:

Code:
#!/bin/sh

for item in `ls /home/...`
do
   echo "File: " $item
done
 
Hallo MichaelK

Bitte verwende ausdrucksvolle Titel. Fast jeder hier benoetigt "Hilfe", meistens wegen mangelnder "Kenntniss".

Zu deinem Problem:


Das fuehrt das $program auf jede $datei im $zielverzeichniss aus. Ist das in etwa was du suchst?

Guten Abend und vielen Dank für deine Hilfe und die von allen anderen Personen!

Ich habe genau dein Beispiel genommen und ausgeführt.
Resultat: $program startet alle Files in einem Folder aber es generiert einen internen Fehler, weil $program versucht diese Files von dort zu starten wo ich mich befinde. Es findet also die richtigen Files im Zielverzeichnis und versucht aber danach von dort aus wo ich mich befinde etwas damit zu machen. Dort gibt es diese aber nicht. Dort gibt gibt es nur "Schlaufe.sh", welches das ganze anstösst. Hmm...ein bisschen kompliziert zu beschreiben.

Wir sind ganz na dran :-) Vielleicht hättest du eine Idee wie ich es so anpassen könnte das es für das System wirklich keinen Zweifel mehr gibt wo das Zielfolder ist und wo $program ist.

Besten Dank!!!
 
Lösung:
Arbeite mit absoluten Pfaden!

Gruß Wolfgang
 

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Last mit etc/passwd anzeigen lassen

HP PSC 2175 - CUPS druckt nicht

Zurück
Oben