einige Anfängerfragen zur bash

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Tate
Beiträge: 200
Registriert: 27.04.2004 17:02:45
Wohnort: Bern, Switzerland
Kontaktdaten:

einige Anfängerfragen zur bash

Beitrag von Tate » 03.07.2004 16:49:44

Hallo!

ich versuche meine backups mittels script etwas zu automatisieren, oder konkreter:

der script wird jeden tag ausgeführt. jeweils am ersten des montag nimmt er die allte sicherungsdatei /curr_sich/ und macht davon ein gezipptes tar save_$monat (später geht dann das via scp noch auf einen anderen server, aber das lassen wir mal). danach beginnt er eine neue sicherung mit einem neuen ordner.

an jedem anderen tag ergänzt er die bestehende curr_sich einfach, was ja rdiff-backup ohne probleme kann.

nun habe ich noch 1 problem (weitere dann evtl später *g*):

1. wie kann ich die variable $TAG richtig auslesen? diverse versuche mit

Code: Alles auswählen

TAG='date +%d'
und ähnlichem gehen nicht, da dann der befehl in den '' einfach als variable angenommen wird. die richtige variable wäre aber halt 01, 02 usw., je nach tag. wie kann ich ein programm ausführen und danach den output direkt als variable weiterverwenden?

hinweis: danach mache ich mittels

Code: Alles auswählen

 if [ $TAG = 01]; then ..... 
weiter..

dankeschön! grüsse tate
Welcome To The Real World!!!
- - : : ¦ ¦ http://www.forall.ch ¦ ¦ : : - -

Benutzeravatar
smoon
Beiträge: 248
Registriert: 07.05.2004 15:44:57
Kontaktdaten:

Re: einige Anfängerfragen zur bash

Beitrag von smoon » 03.07.2004 16:57:46

Tate hat geschrieben:1. wie kann ich die variable $TAG richtig auslesen? diverse versuche mit

Code: Alles auswählen

TAG='date +%d'
und ähnlichem gehen nicht, da dann der befehl in den '' einfach als variable angenommen wird. die richtige variable wäre aber halt 01, 02 usw., je nach tag. wie kann ich ein programm ausführen und danach den output direkt als variable weiterverwenden?
Probiers mal mit

Code: Alles auswählen

TAG=`date +%d`
Wichtig sind dabei die Anführungszeichen (Keine Ahnung, wie die richtig heissen). Sind halt diese schrägen Dinger, oben links neben der Backspace Taste.
smoon:#linuxger:Undernet

Benutzeravatar
Tate
Beiträge: 200
Registriert: 27.04.2004 17:02:45
Wohnort: Bern, Switzerland
Kontaktdaten:

Beitrag von Tate » 03.07.2004 17:32:23

! das wars ! man, ich habe gemeint ich hätte das auch getestet :-)

merci!

jetzt sollte mein skript wohl ohne troubles laufen..

grüsse tate
Welcome To The Real World!!!
- - : : ¦ ¦ http://www.forall.ch ¦ ¦ : : - -

thermoman
Beiträge: 189
Registriert: 22.07.2003 16:31:23

Beitrag von thermoman » 03.07.2004 19:13:33

Du solltest das if Konstrukt noch robuster gestalten:

Code: Alles auswählen

if [ "x$TAG" = "x01" ]; then .....
                    ^
Space nicht vergessen
Einerseits bei Strings Anführungsstriche benutzen (bei Integer würdest Du mit -eq auf Gleicheit prüfen), anderseits das Space nicht vergessen. Mit dem x stellst Du sicher, dass der Vergleich keinen Syntax-Fehler hervorruft, wenn unerwartet $TAG mal leer sein sollte.

mfg,
thermoman
Erst Debian GNU/Linux, dann ab 2004 ein paar Jahre Gentoo Linux und seit vielen Jahren wieder Debian (& Ubuntu)

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 04.07.2004 12:42:34

thermoman hat geschrieben: Mit dem x stellst Du sicher, dass der Vergleich keinen Syntax-Fehler hervorruft, wenn unerwartet $TAG mal leer sein sollte.
Bei Anführungszeichen ist das x überflüssig, ist TAG nämlich leer wird

Code: Alles auswählen

 if [ "" == "01" ];
interpretiert, und das ist kein Problem

thermoman
Beiträge: 189
Registriert: 22.07.2003 16:31:23

Beitrag von thermoman » 04.07.2004 14:55:44

Mag sein - aber so wie er es geschrieben hat wirds problematisch, wenn der unwahrscheinliche Fall mal eintritt.

mfg,
thermoman
Erst Debian GNU/Linux, dann ab 2004 ein paar Jahre Gentoo Linux und seit vielen Jahren wieder Debian (& Ubuntu)

Benutzeravatar
Tate
Beiträge: 200
Registriert: 27.04.2004 17:02:45
Wohnort: Bern, Switzerland
Kontaktdaten:

Beitrag von Tate » 04.07.2004 21:12:35

Tag sollte ja wohl nicht leer sein, da ich das direkt vom system ziehe mittels date. und falls wirklich mal ein solcher fehler auf dem system sein sollte, muss ich das backup wohl eher zurückspielen als erstellen :-)
Welcome To The Real World!!!
- - : : ¦ ¦ http://www.forall.ch ¦ ¦ : : - -

Antworten