PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mein erstes skript.......funktioniert nicht



farell
28-05-2001, 22:47
Ich hab ein Problem, mein erstes Skript unter Linux soll ein Verzeichniss erstellen in das ich meie Savings kopiere. Das Verzeichniss sollte das aktuelle Datum incl. der Zeit (mit Sekunden) anzeigen.
Und da hapert es.

Soweit bin ich gekommen:
---------------------------------------
mkdir -p /Savings/`date +%Y-%m-%d_%T`

cp /windows/D/Save/*
---------------------------------------

Nun weiß ich nicht wo ich die Dateien hin kopieren soll denn wenn ich wieder nach /Savings/`date +%Y-%m-%d_%T` existiert das Verzeichniss nicht da es später ist.

Ich hab mir überlegt das man das Verzeichniss einfach in eine Variable schreibt und die Dateien dann in die Variable kopiert oder mit der Ausgabeumleitung arbeitet. Oder das man einfach das Verzeichniss übergibt nur all diese Dinge kenn ich nur in der Theorie.
Könnt ihr mir da helfen und mir irgendeine Lösung aufzeigen.
Danke schon mal im voraus

micha
28-05-2001, 23:01
Hallole,

ist doch ein guter Ansatz, das Verzeichnis in einer Variablen zu speichern ;)


#! /bin/sh
#
DATE=`date +%Y-%m-%d_%T`
mkdir -p /Savings/$DATE
cp /windows/D/Save/* /Savings/$DATE


Gruß micha

farell
28-05-2001, 23:24
Ich wusste gar nicht das das so einfach ist.
Vielen Dank!!!

farell
28-05-2001, 23:51
Nochmal so ne Frage die evtl. etwas lächerlich klingt, aber die Zeile

#! /bin/sh

muss die da sein?
Ich dachte das man mit # einen Kommentar einleitet demnach ist sie nicht zwingend notwendig oder???

micha
29-05-2001, 00:10
Im weitesten Sinne ja, bis auf die erste Zeile, wenn direkt nach dem "#" ein Ausrufezeichen kommt. Dann ist das Nachfolgende nämlich der Pfad zu der Shell, die das Script auswerten soll. Steht nix da, ist die Standard-Shell normalerweise "/bin/sh", willst Du aber, das das Script von z.B der Bash ausgeführt wird, trägste die in die erste Zeile ein:


#! /bin/bash

Gib mal probeweise nen Pseudopfad in die erste Zeile ein:


#! /bin/bla

Wenn Du dieses Script aufrufst, bekommst Du ne Fehlermeldung "No such file or directory".

Gruß micha

farell
31-05-2001, 00:47
Jetzt hab ich es mal ausprobiert und irgentwie läuft es nicht.
Ich hab es genau so abgetippt und ausgeführt dann kommt die Meldung:

./save: DATE: command not found

und dann kopiert er die Datei nach /Savings
Mach ich irgentwas falsch oder woran liegt das??

micha
31-05-2001, 01:16
mhm, entweder hast Du die Hochkommas falsch geschrieben ( beachte die Richtung), deshalb
schreib mal die erste Zeile um in


DATE=$(date +%y-%m-%d_%T)

Ist ne andere Schreibweise, besser zu lesen wie die Backticks(`). Aber wahrscheinlicher ist, daß Du zwischen DATE, = und $(date....) Leerzeichen hast, die müssen weg !

Gruß micha

farell
01-06-2001, 23:37
Erst mal Danke Danke Danke für deine Hilfe doch irgentwie ist der Wurm drin.

Jetzt bin ich sehr verwirrt
Ich hab die Leerzeilen weggemacht und nun kommt der fehler mit dem DATE nicht mehr nur...
ich hab das Programm in der Konsole mit "save" ausgeführt und jetzt kommt die Fehlermeldung:

bash: save: command not found

danach hab ich es probeweise unter dem KDE-Konquror ausprobiert und promt hat er das Verzeichniss erstellt und die Dateien dort hin kopiert
warum??

mightymike99
02-06-2001, 02:12
hi,

stell dein script mal hier rein!

Gruß
Tobias

farell
04-06-2001, 00:38
Hallo,

also das Script sieht wie folgt aus:

-------------------------------------

#! /bin/sh
#
DATE=`date +%Y-%m-%d__%T`
mkdir -p /home/stony/test/$DATE
cp /hallo /home/stony/test/$DATE

-------------------------------------

der einfachheit halber und um es auszuprobieren hab ich es mit einer erstellten Datei "hallo" in ein extra für diesen Zwech angelegtes Verzeichniss versucht.

Wie schon gesagt unter dem KDE Konquor kann ich auf die Datei (namens "save") klicken und das Verzeichniss wird erstellt und die Datei wird kopiert. Unter der Shell klappt es nicht.

Ach und dann hät ich dazu noch ne Frage, da ist jetzt noch ne Datei die heißt "save~" wenn ich sie lösche ist sie nach kurzer Zeit wieder da. Warum??
Das Phänomen ist mir auch schon bei anderen Dateien aufgefallen die ich editiert habe. Als ich mich an z.B. der "lilo.conf" versucht habe war dann da eine "lilo.conf~".

Gruß Andreas

mightymike99
04-06-2001, 03:37
Zu deiner 2. Frage :Die Dateien mit der Tilde"~"
Das sind mit Sicherheit Backups von deinem Editor

Zu deinem Shellscript:
Sollte das in der ersten Zeile zwischen #! und /bin/sh ein Leerzeichen sein ist das auf jeden Fall schon mal ein Fehler.

Desweiteren wuerde ich die %-Angaben bei date in "Doppelhochkomma" einschliessen.

genauso wie den Pfad /home/stony/test/$DATE

also:
<code>
#!/bin/sh
DATE=`date +"%Y-%m-%d__%T"`
mkdir -p "/home/stony/test/$DATE"
cp /hallo "/home/stony/test/$DATE"
</code>

Gruß
Tobias

farell
07-06-2001, 00:23
Ein trauriges Hallo,
es geht immer noch nicht.

Ich hab das Leerzeichen weggemacht und die die anführungszeichen so gesetzt wie beschrieben doch das Problem ist das selbe unter der Shell: nichts
unter KDE:gehts

Wenigstens etwas, aber nun noch ne Frage zu den Dateien mit der Tilde. Die stören inzwischen gewaltig. Als Standard Editor benutze ich normalerweise joe, giebt es Editoren die dieses Backup nicht anlegen bzw. kann man es vom System her abstellen???

Ach und da wäre noch was, wenn ich irgentwann einmal ein ShellSkript zum laufen bekäme in welche Datei und an welche stelle der Datei kann ich es einfügen damit es beim Systemstart ausgeführt wird (unter suse7.1 steht in einigen Dateien das man sie nicht editieren soll).

Danke schon im Voraus
Andreas

rbla
07-06-2001, 12:22
oh man, hätte irgendjemand schon viel früher merken müssen:

das script ist nicht im suchpfad, um es zu starten musst du es mit pfadangabe aufrufen als z.b. "./save" oder alternativ mit der shell "sh save" (das macht kde)

mightymike99
07-06-2001, 21:47
Hi,

am Besten dein Script wegschmeißen. Noch mal die big-fat <a href="http://www.linuxforen.de/faq/index.php3?sid=780432215&aktion=anzeigen&rubrik=1&id=1">Shellscript-FAQ</a> durchlesen, evtl. noch mal ein paar Minütchen Shell-script einführung auf www.linuxfibel.de (http://www.linuxfibel.de,) dann läuft das bestimmt.

Gruß
Tobias

[ 07. Juni 2001: Beitrag editiert von: mightymike99 ]

rbla
07-06-2001, 22:00
ich glaube doch

vergleich mal farells posting vom 31.5. 1:47 und vom 2.6. 0:37

mightymike99
07-06-2001, 22:26
...das kann auch das Leerzeichen sein das im nächsten Posting zu sehen ist.

Wie auch immer, das ist ein Problem das keins ist, und sich durch einlesen sehr schnell beheben laesst, oder vielleicht ist ja irgendwo einer den man mal schnell danebenstellen kann...

Gruß
Tobias

pitu
08-06-2001, 14:31
Du kannst an den Anfang deines Scripts



set -x


setzen. Dann wird dir genau angezeigt, was das Ding der Reihe nach tut.

thorsten

farell
09-06-2001, 00:42
Hallo,

also es läuft und das freut mich sehr.

Das das so ein Problem für mich darstellte das Ding zum laufen zu bringen zeigt wohl allzugut das ich noch ein richtiger Anfänger bin (und noch sehr sehr viel lehrnen muss).
Umso mehr freud es mich das ihr mir helfen konntet (speziell über die Links über Shell Skripte bin ich froh).

An dieser Stelle noch mal ein kräftiges Danke an alle die mir geholfen haben.

Grüße
Andreas