PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell: Kleines Update Script



Zoroaster
18-03-2007, 16:53
Hallo,

ich lerne gerade ein bisschen mit der bash scripten. Mein erstes kleines Projekt ist ein Update - Script, weil ich regelmäßig Dateien kaputt mache ^^. Hier mein Script

#!/bin/bash

#program to backup single files

#### constants

time=$(date +"%d.%m.%Y %R")

#### functions

function makedir

{
mkdir ~/backup/
}

function copyfile

{
cp $file ~/backup/"$file $time"
}

#### main

echo -n "Path of the file >"
read file

if [ -d ~/backup ] ; then
copyfile
exit 0
else
makedir
copyfile
exit 0
fi

Meine Problem ist folgendes: Ich muss bei der read anweisung immer den vollständigen Pfad angeben, also kein ./datei oder ~/datei . Gibt es da einen anderen Weg ?

Am liebsten würde ich das ganze folgendermaßen gestalten:

backup dateipfad

Statt eben

backup
Path of the file > dateipfad

Sodass ich den vollständigen Pfad in einer Variable habe....
Kann mir jemand den nötigen Hinweis geben?

403
18-03-2007, 23:07
Hi

Schau dir mal $1 $2 und $@ und "$@" an.

man bash sozusagen ;)

Zoroaster
19-03-2007, 01:39
Argh! AAAARRGH!!!!!!

DANKE! VERDAMMT!

Ist mein erster Tag, muss ich dazu sagen....DAMMIT!

Zoroaster
19-03-2007, 10:58
Mein Skript ist jetzt wesentlich kürzer ^^:



#!/bin/bash
# A Program to backup a single file

#### constants

time=$(date +"%d.%m.%Y %R")
file=$1

#### functions

function copyfile

{
cp $file ~/backup/"$rnfile $time"
}

function backupfolder

{
mkdir ~/backup
}

function namebackup

{
rnfile=backup
}

#### main

if [ ! -d ~/backup ] ; then
backupfolder
fi

namebackup
copyfile


Danke für die Hilfe!

403
19-03-2007, 16:58
Hallo,

ich wuerde $file noch in den Namen des Backup statt 'backup' mitaufnehmen. Aber wenn du weisst
was es ist sollte deine Variante ausreichen.



--- baksimple 2007-03-19 16:58:58.000000000 +0100
+++ baksimple.new 2007-03-19 16:58:50.000000000 +0100
@@ -23,7 +23,7 @@
function namebackup

{
- rnfile=backup
+ rnfile=backup_$file
}

#### main

Zoroaster
19-03-2007, 20:09
Jup. Genau das war auch geplant. (Sonst wäre die Funktion namebackup ja ziemlich sinnlos) Ich antworte demnächst nochmal.

Gruß