Brauche Hilfe bei einem Script
Hallo, ich muss ja sagen, ich bin Script Anfaenger. Ich baue mir gerade selber ein kleines Script zum backupen: #!/bin/sh # directory to backup SDIR=/axo/ DDIR=/home/stonki/ BACKUPDIR='date +%A' mkdir /$DDIR/$BACKUPDIR Ich moechte eigentlich, dass "BACKUPDIR" Werte wie z.B. "Tuesday" enthaelt und dann ein Verzeichnis "/home/stonki/Tuesday" erstellt wird. Leider klappt das nicht und er gibt "+%A" aus. Wieso ? cu stonki -- Deutsche ProFTP Docs: http://www.proftpd.de, EFNET: #proftpd KDE3 Renamer: http://www.krename.net KDE3 Barcode und Label Solution: http://www.kbarcode.net
Stefan Onken wrote:
ich muss ja sagen, ich bin Script Anfaenger. Ich baue mir gerade selber ein kleines Script zum backupen:
#!/bin/sh # directory to backup SDIR=/axo/ DDIR=/home/stonki/ BACKUPDIR='date +%A'
BACKUPDIR=`date '+%A'` oder BACKUPDIR=$(date '+%A')
mkdir /$DDIR/$BACKUPDIR
Ich moechte eigentlich, dass "BACKUPDIR" Werte wie z.B. "Tuesday" enthaelt und dann ein Verzeichnis "/home/stonki/Tuesday" erstellt wird. Leider klappt das nicht und er gibt "+%A" aus. Wieso ?
Andreas
Am Dienstag, 3. Juni 2003 14:27 schrieb Stefan Onken:
ich muss ja sagen, ich bin Script Anfaenger. Ich baue mir gerade selber ein kleines Script zum backupen:
#!/bin/sh # directory to backup SDIR=/axo/ DDIR=/home/stonki/ BACKUPDIR='date +%A' mkdir /$DDIR/$BACKUPDIR
Ich moechte eigentlich, dass "BACKUPDIR" Werte wie z.B. "Tuesday" enthaelt und dann ein Verzeichnis "/home/stonki/Tuesday" erstellt wird. Leider klappt das nicht und er gibt "+%A" aus. Wieso ?
[Auszug aus einem Backupskript] [...] # Voreinstellungen DATE=`date "+%d.%m.%Y"` # Heutiges Datum in der Form TT.MM.JHJJ BACKUPDIR="/backup2/backupHOMEmail$DATE" # In diesem Verzeichnis wird das Backup angelegt DIRSTOSAVE="/home/thor/Mail/" # Die zu sichernden Verzeichnisse echo -e "\n\n··· Backup am $DATE für den Server `hostname` ···\n" ############################################################################## # Vorprüfung # Nur root darf Backups erstellen if [ $UID != 0 ] then echo -e "\nNur der Superuser darf Backups erstellen.\n" exit 1 fi mkdir $BACKUPDIR # Existiert das Verzeichnis, in dem die Sicherungen gespeichert werden sollen? if [ ! -d "$BACKUPDIR" ] then echo -e "\n\"$BACKUPDIR\" exstiert nicht." echo -e "Breche ab.\n" exit 1 fi [...] HTH, Thorsten -- .-. Thorsten von Plotho-Kettner - Fon/SMS 0163-2886981 /v\ Linuxuser #275535 Linux Machine #168717 /( )\ http://aussatz.antville.org ^^ http://www.aus-satz.de
Hi Stefan, Stefan Onken schrieb:
BACKUPDIR='date +%A' mkdir /$DDIR/$BACKUPDIR
Ich moechte eigentlich, dass "BACKUPDIR" Werte wie z.B. "Tuesday" enthaelt und dann ein Verzeichnis "/home/stonki/Tuesday" erstellt wird. Leider klappt das nicht und er gibt "+%A" aus. Wieso ?
vielleicht weil /deine/ Anführungszeichen nicht die Richtigen sind, versuch mal diese hier `` BACKUPDIR=`date +%A` MfG. Falk
Am Dienstag, 3. Juni 2003 14:31 schrieb Falk Sauer:
Hi Stefan,
Stefan Onken schrieb:
BACKUPDIR='date +%A' mkdir /$DDIR/$BACKUPDIR
Ich moechte eigentlich, dass "BACKUPDIR" Werte wie z.B. "Tuesday" enthaelt und dann ein Verzeichnis "/home/stonki/Tuesday" erstellt wird. Leider klappt das nicht und er gibt "+%A" aus. Wieso ?
vielleicht weil /deine/ Anführungszeichen nicht die Richtigen sind, versuch mal diese hier ``
BACKUPDIR=`date +%A`6+
MfG. Falk
Habe zwar keine Lösung, da ich selber gerade am 'einarbeiten' bin, habe aber eine Frage zu den Anführungszeigen. Ich benutze immer '. Wenn das die Falschen sind, brauche ich mich auch nicht zu wundern, wenn es nicht klappt. Welche meinst du denn? Die Zeichen, die man mit Shift+"Taste neben ß" (auf einer deutschen Tastatur) bekommt? Marcus Habermehl
Am Die, 2003-06-03 um 18.40 schrieb Marcus Habermehl:
Habe zwar keine Lösung, da ich selber gerade am 'einarbeiten' bin, habe aber eine Frage zu den Anführungszeigen. Ich benutze immer '.
Wenn das die Falschen sind, brauche ich mich auch nicht zu wundern, wenn es nicht klappt. Welche meinst du denn? Die Zeichen, die man mit Shift+"Taste neben ß" (auf einer deutschen Tastatur) bekommt?
Marcus Habermehl
Hallo, zu den Anführungszeichen: Dein Anführungszeichen schützt den eingeschlossenen Text vor jeder Veränderung. echo $HOME -> $HOME. Bei den doppelten Anführungszeichen (") werden Variablen durch Inhalte ersetzt: echo $HOME -> /home/maxmuster. Die Rückanführungszeichen(`) führen dazu, dass der dazwischenliegende Befehl ausgeführt und durch das Ergebnis ersetzt wird: otto=`echo hallo`; echo $otto -> hallo HTH, Wolfgang
On Die, 03 Jun 2003 at 18:51 (+0200), Wolfgang Hinsch wrote:
Am Die, 2003-06-03 um 18.40 schrieb Marcus Habermehl:
Habe zwar keine Lösung, da ich selber gerade am 'einarbeiten' bin, habe aber eine Frage zu den Anführungszeigen. Ich benutze immer '.
Wenn das die Falschen sind, brauche ich mich auch nicht zu wundern, wenn es nicht klappt. Welche meinst du denn? Die Zeichen, die man mit Shift+"Taste neben ß" (auf einer deutschen Tastatur) bekommt?
Marcus Habermehl
Hallo, zu den Anführungszeichen: Dein Anführungszeichen schützt den eingeschlossenen Text vor jeder Veränderung. echo $HOME -> $HOME. Bei den doppelten Anführungszeichen (") werden Variablen durch Inhalte ersetzt: echo $HOME -> /home/maxmuster. Die Rückanführungszeichen(`) führen dazu, dass der dazwischenliegende Befehl ausgeführt und durch das Ergebnis ersetzt wird: otto=`echo hallo`; echo $otto -> hallo
Nein, nicht durch das Ergebnis, sondern durch das, was der Befehl auf stdout ausgibt. Es macht z. B. keinen Sinn, einen rm in Backticks zu packen, der gibt ja höchstens was auf stderr aus (was man allerdings mit `rm datei 2>&1` einfangen könnte). Jan
Hi Marcus, Marcus Habermehl schrieb:
habe aber eine Frage zu den Anführungszeigen. Ich benutze immer '.
es kommt doch drauf an was du mit den Anführungszeichen erreichen willst, jedes Anführungszeichen hat eine andere Bedeutung, ich schreib das jetzt mal so richtig schön unscharf ;-) : " ist in der normalen shell eine Art /weiches/ Anführungszeichen, d.h. innerhalb solcher Anführungszeichens werden zb. Variablen von der shell expandiert, sprich von der shell durch ihren Wert ersetzt dagegen ist ein ' ein /hartes/ Anführungszeichen, dazwischen wird nix expandiert wenn also ein programm mit programm '$variable' aufgerufen wird, bekommt programm wirklich den string $variable zu sehen und nicht deren Wert. bei den Backticks wird die Standardausgabe des Befehls (oder der befehlsfolge) die von den Backticks eingeschlossen wird, ausgegeben oder zb. an eine Variable übergeben, so wie in der Frage von Heinz.
Wenn das die Falschen sind, brauche ich mich auch nicht zu wundern, wenn es nicht klappt. Welche meinst du denn? Die Zeichen, die man mit Shift+"Taste neben ß" (auf einer deutschen Tastatur) bekommt?
genau die. man bash und ein gutes Einführungsbuch sollten dir weiter helfen. MfG. Falk
Am Dienstag, 3. Juni 2003 18:58 schrieb Falk Sauer:
Hi Marcus,
Marcus Habermehl schrieb:
habe aber eine Frage zu den Anführungszeigen. Ich benutze immer '.
es kommt doch drauf an was du mit den Anführungszeichen erreichen willst, jedes Anführungszeichen hat eine andere Bedeutung, ich schreib das jetzt mal so richtig schön unscharf ;-) :
" ist in der normalen shell eine Art /weiches/ Anführungszeichen, d.h. innerhalb solcher Anführungszeichens werden zb. Variablen von der shell expandiert, sprich von der shell durch ihren Wert ersetzt
dagegen ist ein ' ein /hartes/ Anführungszeichen, dazwischen wird nix expandiert wenn also ein programm mit
programm '$variable'
aufgerufen wird, bekommt programm wirklich den string $variable zu sehen und nicht deren Wert.
bei den Backticks wird die Standardausgabe des Befehls (oder der befehlsfolge) die von den Backticks eingeschlossen wird, ausgegeben oder zb. an eine Variable übergeben, so wie in der Frage von Heinz.
Wenn das die Falschen sind, brauche ich mich auch nicht zu wundern, wenn es nicht klappt. Welche meinst du denn? Die Zeichen, die man mit Shift+"Taste neben ß" (auf einer deutschen Tastatur) bekommt?
genau die.
man bash und ein gutes Einführungsbuch sollten dir weiter helfen.
MfG. Falk
So langsam verstehe ich den Unterschied. Über ein Buch habe ich auch schon nachgedacht. Kannst du mir ein Gutes empfehlen? Ich habe zwei Stück gefunden, die ich mir von der Beschreibung her kaufen würde. Allerdings waren die Kommentare bei Amazon und bol eher abratend. Die Titel weiß ich leider nicht mehr aus dem Stehgreif. Aber eins davon gabs auch bei SuSE. Was ja eher für das Buch spricht. Denke ich. Marcus Habermehl
On Dienstag, 3. Juni 2003 14:27, Stefan Onken wrote:
Hallo,
Hi !
ich muss ja sagen, ich bin Script Anfaenger. Ich baue mir gerade selber ein kleines Script zum backupen:
#!/bin/sh # directory to backup SDIR=/axo/ DDIR=/home/stonki/ BACKUPDIR='date +%A' mkdir /$DDIR/$BACKUPDIR
Ich moechte eigentlich, dass "BACKUPDIR" Werte wie z.B. "Tuesday" enthaelt und dann ein Verzeichnis "/home/stonki/Tuesday" erstellt wird. Leider klappt das nicht und er gibt "+%A" aus. Wieso ?
Es scheint, Du hast anstatt bacquotes ` ` normale Quotes genommen ' ' Ich habe leider keine deutsche Tastatur, aber auf meiner belgischen ist est AltGR+µ So, und für die Erklärung fehlen mir da die Worte (nicht lachen, bin belgier ;-) ), aber versuch mal über google im TLDP den Bash Advanced Scripting Guide zu finden, und dort wird eine Menge über Quoting erklärt.
cu stonki
Mfg, Gerd
-- Deutsche ProFTP Docs: http://www.proftpd.de, EFNET: #proftpd KDE3 Renamer: http://www.krename.net KDE3 Barcode und Label Solution: http://www.kbarcode.net
-- -------------------------------------------------------------------------- gmichalk@freegates.be \\_// (. .) Powered by SuSE Linux 8.2 ---------------------------------------oOOo-oOOo--------------------------
participants (8)
-
Andreas Kyek
-
Falk Sauer
-
Gerd-Christian Michalke
-
Jan.Trippler@t-online.de
-
Marcus Habermehl
-
Stefan Onken
-
Thorsten von Plotho-Kettner
-
Wolfgang Hinsch