Error in shell script

Z

Zoungou

Jungspund
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
 
hast schon mal probiert for JAHR_AKT ein set hinzuschreiben?
 
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
 
Zuletzt bearbeitet:
@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.
 
2 Fehler:

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

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.
/master/home/arcadm/e_accounting/scripts/print_coli_monthly_responsetime_report_interactive.csh;
Das "blank" zwischen "interactive" und ".csh" in dieser Zeile ist hoffentlich durch copy/paste oder Abtippen da rein gekommen
und nicht so im script.
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:
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
 
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)

Bonne Fète de Pàques
bis bald
Zoungou
Auch schöne Osterfeiertage ;)
 
Zuletzt bearbeitet:
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
 
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));




Mit euch nur in eine Woche habe ich mehr gelernt wie man mit Shell Skript Professionmnel arbeite Danke Alle im Voraus


Zoungou
 
Zuletzt bearbeitet:
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:
 

Ähnliche Themen

Switche abfragen über Script

script sshpass

Verschlüsseltes Backup-Script mit rsync

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

Zurück
Oben