Hallo, On Mon, 15 Apr 2002, Bernd Brodesser wrote:
* Bjoern Falkenhagen schrieb am 15.Apr.2002:
3. Du ueberpruefst weder die Existenz von /tmp/test.txt noch die von /tmp/sortiert.txt [...] Ja! Bisher war das "overkill", aber fuer ein echtes script solltest du besser beide Dateinamen mittels 'mktemp(1)' erzeugen lassen, das bietet zumindest einen (einfachen) und etwas sichereren Weg so eine temporaere Datei anzulegen... [...]
Was ist an diesem Weg denn besser als mittels >> eine Datei anzulegen?
Wenn das Skript zweimal aufgerufen wird, überschreibt es sich gegenseitig. Das Problem hast Du als Einzeluser ehr nicht, aber Linux ist ein Multiuserbetriebssystem. Wenn Du sowas in einer Multiuserumgebung machst, bekommst Du Probleme. Da sollten die Tempdateien einmalige Namen haben.
ACK! (auch zu allen vorhergegangen Kommentaren von Bernd).
Als wirklich reine Arbeitsdatei ist mktemp gar nicht schlecht, auch die Anwendung ist anhand der Beispiels verständlich. Aber hier wird doch von einer wirklich Temporären Verwendung ausgegangen. Ich jedoch wollte schon das File behalten.
Moment, mktemp generiert dir nur den Dateinamen, den du verwenden kannst, nicht aber die Datei! Siehe das Beispiel in 'man 1 mktemp'.
Dann ist /tmp der falsche Ort.
Ack.
Als Anregung/Uebung (*eg*):
a) Erklaere (im Detail) was die folgende Zeile macht und finde einen passenden Namen fuer 'x'
x() { echo "'${1/##*\/}' in '${1%\/*}'"; }
URGSL! Da ist mir doch glatt was beim reinkopieren danebengegangen! Richtig haette es heissen sollen: x() { echo "'${1##*\/}' in '${1%\/*}'"; } Eine Alternative waere: x() { echo "'${1/#*\/}' in '${1%\/*}'"; } (Sorry!)
b) was macht dann anschliessend:
x $0
Gibt den Pfad inlusive dem Dateinamen des Skriptes aus und in welchem Pfad er steht. Richtig?? ;-)
Probier es aus.
Es geht allerdings nicht darum "was" es macht, sondern "wie" :) -dnh -- / "Congratulations on deriving the density of the intergalactic medium to be \ [ 10^33 kg per cubic meter. That is 1,000,000,000,000,000,000,000,000,000,000 ] \ times more dense than if it was packed full of elephants" -- Frossie /