Wie rufe ich ein Script mit übergabeParam aus einem anderen auf?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Michi0209, 29.06.2006.

  1. #1 Michi0209, 29.06.2006
    Zuletzt bearbeitet: 29.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo zusammen,

    ich habe ein script geschrieben, in dem ich den ordnerinhalt nach einer bestimmten Datei durchsuche und diese dann bearbeit. Nun habe ich aber einen "Hauptordner" in dem ca. 500 solcher Unterordner vorhaden sind.

    Wie bekomme ich es nun hin, diesen Hauptordner einmal komplett zu durchlaufen und für sämtliche unterordner das shell-script aufzurufen.

    bis jetzt habe ich nur folgendes:

    Code:
    #! /bin/sh
    
    clear
    
    FILE=$HOME/cw_source
    
    cd "$FILE"
    
     find . -type d  -maxdepth 1 -exec  " !!hier sollte das script aufgerufen werden!!!   \; -print 

    Danke für jeden Tip!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 damager, 29.06.2006
    Zuletzt bearbeitet: 29.06.2006
    damager

    damager Moderator

    Dabei seit:
    27.08.2003
    Beiträge:
    3.065
    Zustimmungen:
    0
    Ort:
    Munich
    hallo und willkommen beim UB :winke:

    ist zwar offtopic aber ich möchte dich darauf hinweisen das dein topic eigentlich gegen die boardregeln verstösst :oldman

    dieser schon gelesen bei der anmeldung hier?
    http://www.unixboard.de/index.php?page=Boardregeln (Punkt 2.5)
     
  4. #3 Michi0209, 29.06.2006
    Zuletzt bearbeitet: 29.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    Oh, sorry!! Du hast natürlich recht!
     
  5. #4 Wolfgang, 29.06.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Sorry, aber deine Frage versteh ich nicht richtig.
    Was macht das zu startende Script?
    Erwartet es Parameter?
    Sucht das Script selbst in den Verteichnissen?
    Wenn ja, dann kannst du doch gleich dein geamtes Script in eine Schleife packen.
    Wenn du eine bestimmte Datei nach z.B. Namen suchst, und diese dann bearbeitest:
    Code:
    for I in $(find /pfad -name "name"); do
    cat $I;
    #sed grep oder was du halt machen willst- halt dein code
    done
    
    Oder erläutere mal genauer um was es geht.

    Gruß Wolfgang
     
  6. #5 Michi0209, 29.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    okay, dann versuche ich es mal ausführlicher zu erläutern....

    Folgende Struktur:

    source |
    |
    ->Projekt1
    ->Projekt2
    .... usw.

    nun habe ich ein script geschrieben, das ein Parameter erwartet. Dieser Parameter ist der jeweilige Projektordner. In diesem Fall wäre das "Projekt1". Das script läuft nun durch dieses Verzeichnis "Projekt1" und arbeitet dort einige Operationen durch....

    Nun möchte ich aber ein zweites script schreiben, das es mir ermöglicht durch das "source" Verzeichniss zu laufen und hier bei jedem Ordner das 1 script mit dem jeweiligen Ordnernamen aufzuruft.

    Ich hoffe das ist jetzt etwas klar, was ich hier versuche zu machen... wahrscheinlich sehe ich vor lauter Bäumen den Wald nicht mehr ;)
     
  7. #6 Wolfgang, 29.06.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn es nur eine Ebene sein soll, und die Prozesse einzeln gestartet werden sollen:
    Code:
    for I in $(find /pfad/source -type d -maxdepth 1 ); do
    skript2.sh $I;
    done
    
    Natürlich musst du den Pfad zum Script anpassen. Dein Script muss dann den übergebenen Parameter ($1) verarbeiten.
    Es geht aber auch mit Pipe und xargs, was bei vielen Verzeichnissen ratsam ist.
    Code:
    find /pfad/source -type d -maxdepth 1 |xargs -n1 script2.sh 
    
    Das sind nur zwei von vielen Möglichkeiten.
    Gruß Wolfgang
     
  8. #7 Michi0209, 30.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    Danke für deine Antwort Wolfgang, aber anscheinend bin ich zu doof....

    bekommen immer folgenden Fehler: xargs: /Users/Michael/svn_import.sh: Permission denied


    das ist mein svn_import_all.sh script. Es liegt direkt auf dem Michael-Werzeichniss.
    Code:
    #! /bin/sh
    
    clear
    
    FILE=$HOME/cw_source
    
    cd "$FILE"
    
     find $FILE -type d -maxdepth 1 |xargs -n1 $HOME/svn_import.sh
    ...das svn_import_all.sh sollte jetzt das svn_import.sh aufrufen. auch dieses befindet sich im gleichen Verzeichniss und sieht so aus:

    Code:
    #! /bin/sh
    
    clear
    
    Uebergabe=$*
    
    if [ $# -ne 1 ]
    then   echo "Bitte immer nur ein Projekt importieren!!!"
           echo "------------------------------------------"
      exit 1
    fi
    
    
    FILE=$HOME/cw_source/$Uebergabe
    
    cd "$FILE"
    
    # DEBUG
    ###############################
    echo Projekt zum import: $Uebergabe
    echo Verzeichnis: "$FILE"
    Kann mir bitte jemand sagen was nun am ersten script falsch ist und was ich ändern muß!?!

    Danke Michael
     
  9. #8 Xanti, 30.06.2006
    Zuletzt bearbeitet: 30.06.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ist /Users/Michael/svn_import.sh ausführbar und hast Du die Rechte dafür? Btw, was für ein Unix-System hast Du?

    Gruss, Xanti

    edit: find übergibt die gefundenen Files mit vollem Pfad, was Problem in Deinem Skript ergibt, da Du hier

    Code:
    FILE=$HOME/cw_source/$Uebergabe
    
    nochmal einen Pfad voranhängst. Vielleicht solltest Du mit basename arbeiten, wenn Du Dein Skript nicht ändern willst.
     
  10. #9 Michi0209, 30.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo,

    ich habe vor 3 Tagen angefangen mit dieser scriptsprache und stehe dementsprechend ganz weit am anfang...

    ich arbeite auf meinem mac mit dem terminal?! wieso was ist damit?
     
  11. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Nix, es könnte halt 'ne andere Syntax haben. Du hast trotzdem noch nicht die erste Frage beantwortet: ist es ausführbar? ;)
     
  12. #11 Michi0209, 30.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    das svn_import.sh ist ausführbar, ja!

    nur das svn_import_all.sh funktioniert nicht!
     
  13. #12 phrenicus, 30.06.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Michi0209,

    die Fehlermeldung ist eigentlich eindeutig und Xanti hat völlig Recht:
    Die Fehlermeldung kommt von xargs und besagt, dass der ausführende Benutzer ein bestimmtes Zugriffsrecht auf diese Datei nicht hat. Es kann sich in diesem Fall nur um das Ausführungsrecht handeln. Bist Du sicher, dass das Skript für diesen Benutzer ausführbar ist?
    Ich könnte schwören, dass Xanti Recht hat!

    Gruß
     
  14. #13 Wolfgang, 30.06.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Ausserdem sieht die Shebang recht merkwürdig aus.
    Also versuch es mal ohne das Leerzeichen da drin.
    Lass dir auch mal beim Testen anzeigen, was dein erstes Script an das zweite übergibt.
    Also statt deinem zweiten Scriptaufruf einfach mal mit echo durchlaufen lassen.
    Dann wird dir klarer, was Xanti mit basename meinte.

    Starte mal dein zweites Script zu Fuß. Das sollte nur gehen, wenn es ausführbar ist.

    Gruß Wolfgang
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Michi0209, 30.06.2006
    Michi0209

    Michi0209 Mitglied

    Dabei seit:
    29.06.2006
    Beiträge:
    46
    Zustimmungen:
    0
    das tut es auch... das zweite script läuft!!!
     
  17. #15 phrenicus, 30.06.2006
    phrenicus

    phrenicus Routinier

    Dabei seit:
    24.05.2006
    Beiträge:
    253
    Zustimmungen:
    0
    Ort:
    Tübingen, Germany
    Hast Du strace installiert?

    Wenn ja, starte das mal bitte so:

    Code:
    prompt:~ # strace ./svn_import_all.sh 2>/tmp/trace.txt
    
    und poste mal das Ende des trace (vielleicht als Attachment). Vielleicht kann man was erkennen.

    Gruß
     
Thema:

Wie rufe ich ein Script mit übergabeParam aus einem anderen auf?

Die Seite wird geladen...

Wie rufe ich ein Script mit übergabeParam aus einem anderen auf? - Ähnliche Themen

  1. PHP: Formular auf Checkbox prüfen und Formular-Daten an anderes Script übergeben

    PHP: Formular auf Checkbox prüfen und Formular-Daten an anderes Script übergeben: Hallo zusammen, ich stehe vor einem Verständnisproblem. Ich habe ein Script "A" indem ein Formular enthalten ist. In dem Formular soll der User...
  2. Updates per Shell Script überprüfen

    Updates per Shell Script überprüfen: Hallo erstmal, also ich hab bisher leider überhaupt keine richtige Erfahrung was ShellScripts angeht. Im moment bin ich auf der Suche nach...
  3. Shell Script überprüfen

    Shell Script überprüfen: Hallo liebes Unix Board, Ich hab ein Shellscript was wenn ich es im Terminal ausfürhen möchte mir eine Komische Fehlermeldung ausgibt....
  4. Verschiedene Shells beim Script im Script aufrufen?

    Verschiedene Shells beim Script im Script aufrufen?: s30a #!/bin/sh X1=x1 X2=x2 X3=x3s30 #!/bin/sh ./s30a echo '$X1: ' $X1 echo '$X2: ' $X2 echo '$X3: ' $X3 echo '( ./s30a ; )' ( ./s30a...
  5. crontab: wie am best .php script aufrufen? wget oder lynx?

    crontab: wie am best .php script aufrufen? wget oder lynx?: hallo, muss zur regelmässigen kontrolle/reparatur einiger datenbanken per crontab ein paar .php urls aufrufen - wie mache ich das am besten?...