PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einfügen in ein Textfile



H a r a l d
30-08-2001, 17:47
hi,

ich möchte mit folgenden Script eine Zeile in ein Textfile einfügen:

fmfile="/xyz/test.php"

anfang=$(head -39 $fmfile)
ende=$(tail -40 $fmfile)

body="$name = '$username'"

echo $anfang$body$ende>$fmfile

Mein Problem ist, das der Zeilenumbruch beseitig wird.
das heist, nach dem einfügen der Zeile sind alle Zeilen aneinander gehängt (ohne Leerzeilen).

Wie kann ich das machen das die Zeilenumbrüche nicht verändert werden????

Gruß

Harald

thommy
31-08-2001, 07:48
echo $anfang > $fmfile
echo $body >> $fmfile
echo $ende >> $fmfile

echo fügt jeweils den Zeilenumbruch ein.

Thomas

mightymike99
31-08-2001, 13:47
Hi Harald,

Thommy's Beispiel geht nur wenn alles jeweils mit Anführungszeichen quotiert ist.

Oder ...



#!/bin/bash
sourcefile=$1
destinationfile=$2
Insert="Text to insert"

# Als einfachstes direkt
head -1 $sourcefile >${destinationfile}.direct
echo $Insert >>${destinationfile}.direct
tail +2 $sourcefile>>${destinationfile}.direct

# oder mit Variablen, hier ist aber der ein oder andere Trick noetig

# Variable IFS(Spezial-Shell-Variable:Internal Field Seperator=Feldtrennzeichen:
# Space, Newline, tab) sichern und aendern
IFS_ORIG="$IFS"
IFS=" "

Head=$(head -1 $sourcefile)
Tail=$(tail +2 $sourcefile)
#echo -e "$Head\n$Insert\n$Tail"

#Wichtig! IFS zuruecksetzen
IFS="$IFS_ORIG"

# oder mit quotierungen + eval

Head='"$(head -1 $sourcefile)"'
Tail='"$(tail +2 $sourcefile)"'

#Kommandos werden jetzt ausgefuehrt
eval echo "$Head" >${destinationfile}.quoted
echo $Insert >>${destinationfile}.quoted
eval echo "$Tail" >>${destinationfile}.quoted


Gruß
Tobias