[Unix]: Variable mit Datum in Shellscript

Hallo

Ich hab ein Unix-Script unter Compaq Tru64 wo ich folgendes mache:

#Anfang
#!/bin/ksh

Das profile muss ich laden, da mir sonst einige sachen fehlen.

. /usr/users/oracle/.profile

DatAnf=$(date +%d-%b-%Y)
ZeitAnf=$(date +%H:%M:%S)

Hier läuft z.B ein FTP…

DatEnd=$(date +%d-%b-%Y)
ZeitEnd=$(date +%H:%M:%S)
echo „$DatAnf $ZeitAnf@$DatEnd $ZeitEnd@Text@“ > /temp/file.txt
#Ende vom script

Nun bekomm ich aber wenn ich das Script über crontab laufen lasse immer folgenden Fehler:
Fehler in Zeile 30 ‚DatAnf=$‘ unexpected

Was soll das? Wenn ich das script mit
. x_test
starte geht alles problemlos.

im crontab steht folgendes:
15 3 * * 1-6 /usr/users/oracle/x_test > /dev/null

Wieso ist das so? Berechtigungen auf den Files sollten meiner Meinung nach richtig eingestellt sein.

Vielen Dank für Hinweise

Gruss
Marc

Hallo Marc,

ich kenne zwar die Besonderheiten der ksh nicht aber bei mir würden die folgenden Zeilen so aussehen:

DatAnf=$(date +%d-%b-%Y)
ZeitAnf=$(date +%H:%M:%S)

DatAnf=date +%d-%b-%Y
ZeitAnf=date +%H:%M:%S

Grüße
Martin

Hallo Martin

Zuerst mal Dank für die Antwort, aber unter ksh will das irgendwie nicht so recht. D.h. wenn ich es nach Deinem Vorschlag mache, habe ich nachher in der Variable folgenden Inhalt:
date +%d-%b-%Y
Ich bräuchte aber das Datum als Datum dort drin. :smile:

Gruss
Marc

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Marc,

meiner Meinung nach ist ist die Syntax usw. im Script richtig (deshalb läuft es ja auch bei interaktivem Aufruf). Wenn ein Script über Cron gestartet wird, hat es aber nicht dieselbe Umgebung (Umgebungsvariablen, z.B. PATH). Enventuell mußt du nur deine Umgebungsvariablen aus .profile oder .bashrc (woher auch immer) geeignet setzen.

Probiers mal, indem du den kompletten Pfad von ‚date‘ einsetzt, also z.B.

start_time=$(/usr/bin/date +„Formatstring…“)

dann klappts auch mit dem Nachbarn…

Gruß
Bernhard

Hallo Marc,

#Anfang
#!/bin/ksh

DatAnf=$(date +%d-%b-%Y)
ZeitAnf=$(date +%H:%M:%S)

Nun bekomm ich aber wenn ich das Script über crontab laufen
lasse immer folgenden Fehler:
Fehler in Zeile 30 ‚DatAnf=$‘ unexpected

Was soll das? Wenn ich das script mit
. x_test
starte geht alles problemlos.

Ob Du für die Kommandosubstituion Backticks oder Dollar/Klammer benutzt sollte laut manpage wurscht sein.

Command substitution allows the output of a command to be substituted in place of the command name itself. Command substitution occurs when the command is enclosed as follows:

$(command)

or (backquoted version):

`command`

Aber wieso benutzt Du die ksh hierfür?
Im Beispiel kann ich nicht erkennen, wofür die gut sein soll.
Probier es doch mal spaßeshalber mit der bash.

Gruß
Andreas

Zuerst mal Dank für die Antwort, aber unter ksh will das
irgendwie nicht so recht. D.h. wenn ich es nach Deinem
Vorschlag mache, habe ich nachher in der Variable folgenden
Inhalt:
date +%d-%b-%Y
Ich bräuchte aber das Datum als Datum dort drin. :smile:

Aufpassen. Du musst schon die Backticks nehmen. Der Backtick findet sich direkt links neben der Backspacetaste (genau, die französischen Dinger) und du nimmst den oberen (also die Shift-Taste drücken).

Ich muss das so umständlich erklären, weil ich keine Ahnung habe, wie man accong ägü schreibt :smile:

Also, wie es schon Martin schrieb:

DatAnf=date +%d-%b-%Y

und nicht, wie du es möglicherweise getippert hast:

DatAnf=‚date +%d-%b-%Y‘

Martins Schreibweise ruft nämlich den Befehl date auf, der den Rückgabewert des Befehls in die Variable schreibt. Die zweite Schreibweise mit den einfachen Ticks (die über dem #) schreibt den Wert, der zwischen ihnen steht, in die Variable.

Stefan