Error in shell script

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Zoungou, 08.04.2009.

  1. #1 Zoungou, 08.04.2009
    Zoungou

    Zoungou Jungspund

    Dabei seit:
    02.04.2009
    Beiträge:
    16
    Zustimmungen:
    0
    Hallo zusammen,

    die zeit lauft für mich! Bitte! gibt's jemand mir zu helfen: ich wollte 2 scripts in my shell script integrieren
    aber ich bekomme dieser Fehlermeldung:

    print_colibri_monthly_responsetime_report_interactive
    Usage: print_colibri_monthly_responsetime_report_interactive.csh <yyyymm>
    ./Kat2-ServiceReport.sh: syntax error at line 25: `JAHR_AKT=$' unexpected


    Script:

    #!/bin/csh

    echo "ServiceReport";

    /master/home/arcadm/work/e_reporting.csh;
    #
    echo "print_colibri_monthly_responsetime_report_interactive"

    /master/home/arcadm/e_accounting/scripts/print_coli_monthly_responsetime_report_interactive.csh;

    #
    JAHR_AKT=$(date +"%Y");
    JAHR_DEK=$(($JAHR_AKT - 1));
    MONAT_AKT=$(date +"%m");
    MONAT_DEK=$(($MONAT_AKT - 1));

    #Monat zu klein?
    if [ "$MONAT_DEK" -le "0" ]; then
    MONAT_DEK="12";
    JAHR_AKT="$JAHR_DEK";
    fi;

    #Monat wird beim subtrahieren ggf. einstellig
    if [ "$MONAT_DEK" -le "9" ] && [ "$MONAT_DEK" -ge "1" ]; then
    MONAT_DEK="0$MONAT_DEK";
    fi;

    DATUM_FIND="$JAHR_AKT$MONAT_DEK$(echo "01")"; #yyyymm01
    DATUM_TARNAME="$JAHR_AKT$MONAT_DEK"; #yyyymm


    find /imagemaster/home/eaarcadm/BA_eAkte_accounting/monatlichen_service_report -newer $DATUM_FIND -type f -exec tar -cf Kat2-ServiceReport$DATUM_TARNAME.tar {} \;

    ##END


    Error:

    print_colibri_monthly_responsetime_report_interactive
    Usage: print_colibri_monthly_responsetime_report_interactive.csh <yyyymm>
    ./Kat2-ServiceReport.sh: syntax error at line 25: `JAHR_AKT=$' unexpected


    Please Help me.

    Zoungou
     
  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 HPollak, 08.04.2009
    HPollak

    HPollak Foren As

    Dabei seit:
    21.12.2007
    Beiträge:
    93
    Zustimmungen:
    0
    hast schon mal probiert for JAHR_AKT ein set hinzuschreiben?
     
  4. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    kommt hinter das
    kein ;

    ?
     
  5. #4 Zoungou, 08.04.2009
    Zuletzt bearbeitet: 08.04.2009
    Zoungou

    Zoungou Jungspund

    Dabei seit:
    02.04.2009
    Beiträge:
    16
    Zustimmungen:
    0
    bitte foexle

    wie kann ich das machen.

    bitte wenig ahnung BItttte!
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    wo genau solle ich for und set machen?
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    HPollak,

    könntest du bitte mir sagen genau wo? Und ob ich nochmal JAHR_AKT=$(date +"%Y"); eintippt.

    Danke und Gruß

    zoungou
     
  6. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    @foexle: Nein, es funktioniert auch ohne. (Zumindest die bash hat mir deswegen noch keinen Fehler geworfen). Ok, wobei ich auch nur die bash "kenne" (wenn man so will), über den Rest weiß ich von den Feinheiten her wenig bis nichts.....

    @Zoungou: HPollak meinte, du sollst bei den Variablenzuweisung ein set an die erste Stelle schreiben. (for war ein Tippfehler und sollte (wohl) vor heißen).
    Also
    Code:
    set  JAHR_AKT=$(date +"%Y")
    statt
    Code:
     JAHR_AKT=$(date +"%Y")
    (Und nimm für solche codeabschnitte bitte die [ code ] [/ code ] -Tags (der #-Knopf beim Beitrag erstellen), dann wirds übersichtlicher.
     
  7. #6 NoXqs, 08.04.2009
    Zuletzt bearbeitet: 08.04.2009
    NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    2 Fehler:

    1.
    In der ersten Zeile (SheBang) gibst du als Shell die csh an, aber der Code hat eine Posix-artige Syntax (für z.B.ksh, bash, sh).
    Code:
    #!/bin/csh
    
    ändern in
    Code:
    #!/bin/bash
    
    2.
    Dieses Script erwartet als $1 einen String, der wie ein Datum formatiert sein muss (yyyymm).
    Das gibst beim Aufruf aber nicht an.
    Deshalb die Fehlermeldung.
    Das "blank" zwischen "interactive" und ".csh" in dieser Zeile ist hoffentlich durch copy/paste oder Abtippen da rein gekommen
    und nicht so im script.
     
  8. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
  9. #8 yai, 08.04.2009
    Zuletzt bearbeitet: 08.04.2009
    yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    Hi,
    wo hast'n so blödsinnige Skripte her?
    Na egal. Die erste Fehlermeldung (Usage: print_colibri_monthly_responsetime_report_interact ive.csh <yyyymm>" wird ja von eben dem Skript (print_colibri_monthly_responsetime_report_interact ive.csh) geworfen, das du ja offenbar nicht mit gepostet hast (oder hab ich was übersehen?). Dem wird also ein benötigter Parameter nicht übergeben. Die andere Meldung (/Kat2-ServiceReport.sh: syntax error at line 25: `JAHR_AKT=$' unexpected) wird von einem Skript namens Kat2-ServiceReport.sh geworfen. Ist das das gepostete Skript? Dann fehlt, wie NoXqs schon sagte, ebenfalls der Übergabeparameter. Nicht sehr ausgegoren das Ganze. Poste doch bitte alle betroffenen Skripte, sonst fällt die Analyse schwer. Und wenns 'ne bash ist, nimm bitte die ganzen Semikolons raus - ist ja nicht Perl.
    Bye,
    yai.
     
  10. #9 Zoungou, 09.04.2009
    Zoungou

    Zoungou Jungspund

    Dabei seit:
    02.04.2009
    Beiträge:
    16
    Zustimmungen:
    0
    Yai Daboss, NoXqs Grüß Got,

    danke für eure Hinweise und Tolle Beiträge:brav:; wie sie alle gesagte haben, ich habe versuche alles neue zu machen.

    NoXqs du hast recht ich habe diese string gefunden das war 200903

    Daboss es Funktionniert seit anfang an aber nicht viele Erfahrung mit Shell darum. Jetzt nur der Find Command gibt mir jetzt ein Fehler Bitte Helfen Sie mir.

    Das Skript funktionniert bis zu find command wo ich diese Fehlermeldung
    bekommt:

    Error:
    Code:
    #!/bin/csh
    
    /master/home/arcadm/work/eakte_monitor2.csh 
    /master/home/arcadm/e_accounting/scripts/print_col_monthly_responsetime_report_interactive.csh 200903
    
    set JAHR_AKT=$(date +"%Y");
    set JAHR_DEK=$(($JAHR_AKT - 1));
    set MONAT_AKT=$(date +"%m");
    set MONAT_DEK=$(($MONAT_AKT - 1));
    #Monat zu klein?
    if [ "$MONAT_DEK" -le "0" ]; then
        MONAT_DEK="12";
        JAHR_AKT="$JAHR_DEK";    
    fi;
    #Monat wird beim subtrahieren ggf. einstellig
    if [ "$MONAT_DEK" -le "9" ] && [ "$MONAT_DEK" -ge "1" ]; then
        MONAT_DEK="0$MONAT_DEK";
    fi;
    DATUM_FIND="$JAHR_AKT$MONAT_DEK$(echo "01")"; #yyyymm01
    DATUM_TARNAME="$JAHR_AKT$MONAT_DEK"; #yyyymm
    
    find /master/home/arcadm/e_accounting/out -newer $DATUM_FIND -type f -exec tar -cf Kat2-ServiceReport$DATUM_TARNAME.tar {} 
    
    
    

    Error:

    Code:
    MONAT_DEK=12
    JAHR_AKT=
    + [ 12 -le 9 ] 
    DATUM_FIND=12$(echo 01)
    DATUM_TARNAME=12
    + find /master/home/arcadm/e_accounting/out -newer 12$(echo 01) -type f -exec tar -cf Kat2-ServiceReport12.tar {} ; 
    find: cannot access 12$(echo
    arcadm@bm1:/master/home/arcadm/work>
    
    -____________________________________


    danke für eure Hinweise und Tolle Beiträge und Bonne Fète de Pàques
    bis bald

    Zoungou
     
  11. #10 daboss, 09.04.2009
    Zuletzt bearbeitet: 09.04.2009
    daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Also dem Output nach passt da einiges mehr nicht, wie nur der find-Aufruf. Ich hab jetzt trotz knapper Zeit kurz nach der csh gegoogelt. Mein Vorschlag kann so garnicht laufen, aber mit http://www.chemie.fu-berlin.de/chemnet/general/topics/scripts_csh.html solltest du des schon entsprechend anpassen können.

    Hast du übrigens mal geschaut, was bei deinem find der --newer -Parameter erwartet? Bei mir steht da in der man-page:
    Code:
    -newer file
                  File was modified more recently than file.  If file is a symbolic link and the -H option or the -L option is in effect, the modification time of the file  it
                  points to is always used
    
    Also wirst du da mit nem Datum nicht weit kommen, deswegen hatte ich ja in der Ursprünglichen Version vom find-Aufruf auch --newerat benutzt
    Code:
     -newerXY reference
                  Compares  the timestamp of the current file with reference.  The reference argument is normally the name of a file (and one of its timestamps is used for the
                  comparison) but it may also be a string describing an absolute time.  X and Y are placeholders for other letters, and these letters select which time belong‐
                  ing to how reference is used for the comparison.
    
                  a   The access time of the file reference
                  B   The birth time of the file reference
                  c   The inode status change time of reference
    
                  m   The modification time of the file reference
                  t   reference is interpreted directly as a time
    
                  Some  combinations  are  invalid;  for example, it is invalid for X to be t.  Some combinations are not implemented on all systems; for example B is not sup‐
                  ported on all systems.  If an invalid or unsupported combination of XY is specified, a fatal error results.  Time specifications are interpreted as  for  the
                  argument  to the -d option of GNU date.  If you try to use the birth time of a reference file, and the birth time cannot be determined, a fatal error message
                  results.  If you specify a test which refers to the birth time of files being examined, this test will fail for any files where the birth time is unknown.
    
    Also, wenn du das bash-Dingens nach csh "konvertiert" hast, wirst du mit dem find auch noch bissl rumbasteln müssen. Vermutlich am ersten Tag eines Monats eine "Referenzdatei" erstellen (Stichpunkt touch-Befehl), und diese bei -newer angeben oder so.... (wenn ich -newer richtig verstehe)

    Auch schöne Osterfeiertage ;)
     
  12. #11 Zoungou, 09.04.2009
    Zoungou

    Zoungou Jungspund

    Dabei seit:
    02.04.2009
    Beiträge:
    16
    Zustimmungen:
    0
    Daboss,

    Danke für die Zeit die für mich gehabt habe. Ich versuche nochmals mit alles was Sie mir geschikt habe weiter zu kommen. Weil ich sehe das die Fehler kommen von mir.

    Danke

    Zoungou
     
  13. #12 Zoungou, 10.04.2009
    Zuletzt bearbeitet: 10.04.2009
    Zoungou

    Zoungou Jungspund

    Dabei seit:
    02.04.2009
    Beiträge:
    16
    Zustimmungen:
    0
    Bitte one more Help SHELL Skripte Aufruf mit "1 Month Ago" Parameter

    Hi Daboss,Hi Alle Unixler, Sheller

    Original Skript

    Code:
    #!/bin/csh
    
    /master/home/arcadm/work/eakte_monitor2.csh 
    /master/home/arcadm/e_accounting/scripts/print_col_monthly_responsetime_report_interactive.csh 200903
    
    set JAHR_AKT=$(date +"%Y");
    set JAHR_DEK=$(($JAHR_AKT - 1));
    set MONAT_AKT=$(date +"%m");
    set MONAT_DEK=$(($MONAT_AKT - 1));
    #Monat zu klein?
    if [ "$MONAT_DEK" -le "0" ]; then
        MONAT_DEK="12";
        JAHR_AKT="$JAHR_DEK";    
    fi;
    #Monat wird beim subtrahieren ggf. einstellig
    if [ "$MONAT_DEK" -le "9" ] && [ "$MONAT_DEK" -ge "1" ]; then
        MONAT_DEK="0$MONAT_DEK";
    fi;
    DATUM_FIND="$JAHR_AKT$MONAT_DEK$(echo "01")"; #yyyymm01
    DATUM_TARNAME="$JAHR_AKT$MONAT_DEK"; #yyyymm
    
    find /master/home/arcadm/e_accounting/out -newer $DATUM_FIND -type f -exec tar -cf Kat2-ServiceReport$DATUM_TARNAME.tar {}


    Bitte ein frage:

    wie kann ich dieses Skript mit Parameter "1 month Ago" aufrufen:

    Code:
     /master/home/arcadm/e_accounting/scripts/print_col_monthly_responsetime_report_interactive.csh 200903
    
    Zum aufrufen Kann ich so eingeben ?

    Code:
     /master/home/arcadm/e_accounting/scripts/print_col_monthly_responsetime_report_interactive.csh $(($MONAT_AKT - 1));$(($MONAT_AKT - 1));




    Zoungou
     
  14. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  15. #13 Zoungou, 15.04.2009
    Zoungou

    Zoungou Jungspund

    Dabei seit:
    02.04.2009
    Beiträge:
    16
    Zustimmungen:
    0
    Aufruf andere Skripte im ein Skripte

    Hallo DABOSS :brav: ,

    ich wollte von ganzem Herzen Ihnen bedanken für Ihre kompetenz in der Shell Scripting. Heute mein Skript funktioniert perfekt, aber mit kleinen Anpassungen. Aber es ist deine Idee.
    Vielen Danke und Grüß.

    Danke auch an: Yai, NoXqs,foexle, HPollak für diese toll Arbeit. Ihr seid alle :brav:

    Danke

    Zoungou :headup:
     
  16. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Schön, das es jetzt funktioniert ;)
     
Thema:

Error in shell script

Die Seite wird geladen...

Error in shell script - Ähnliche Themen

  1. postfix - fputs-error

    postfix - fputs-error: Ich hoffe, dass sich wer von euch mit postfix bzw. der Fehlermeldung auskennt. Ich habe nach dem Youtube-Video postfix eingerichtet: [MEDIA] Nun...
  2. journal commit I/O error auf SSD

    journal commit I/O error auf SSD: Hallo zusammen Habe meiner "Sun Ultra 45" (SPARC System) eine 64GB-SSD eingebaut, und dort das OS (Debian 7) installiert. In unregelmässigen...
  3. Kein Sound im Spiel - OpenAL error

    Kein Sound im Spiel - OpenAL error: Ich hab in einem Spiel leider keinen Sound. In der Konsole kommt in einer Endlosschleife immer diese Meldung: OpenAL error: 40964 (Audio_Tick...
  4. syntax error near unexpected token `&'

    syntax error near unexpected token `&': Hallo Ich habe ein Scrip angepasst bzw. erweiter und habe nun an einer Stelle ein Problem. Vor der erweiterung ist es einwandfrei...
  5. Update error für OpenSuse 12.3 für "libsolv-tools-0.3.2-2.14.1"

    Update error für OpenSuse 12.3 für "libsolv-tools-0.3.2-2.14.1": Hallo, ich kann mein OpenSuse 12.3 nicht mehr richtig updaten. beim versuch bekomme ich folgende Meldung: ( 1/23) Installing:...