|
| Ændre/oprette en række filer via et sh scr~ Fra : Dennis Pedersen |
Dato : 22-05-02 14:03 |
|
Hej!
First of all må jeg nok sige at jeg er absolut ikke den stiveste person i
FreeBSD ej heller shell scripting (jeg aner ikke lige hvordan jeg skal
spørge google så here goes)
Jeg skal via et lille shell script have oprettet nogle filer, men nogle af
disse filer indeholder #! hvilket er grisefy i /bin/sh reci så vidt jeg kan
forstå. Er der nogen måde jeg kan omgåes dette på eller?
Ydermere hvordan kan jeg på en nem måde indsætte et tegn i starten af en
bestemt fil, på en specifik linje hvor der allerede står noget tekst?
Via echo >> kan jeg appende til filen, men jeg har ikke rigtig kunne
gennemskue hvordan jeg kan bestemme hvilket linje nr i filen det skal smides
ind - nogen der har et hint?
Hvorvidt det bliver en pæn løsning eller ej er sådan set underordnet - bare
det virker ;)
/Dennis
| |
Claus Rasmussen (22-05-2002)
| Kommentar Fra : Claus Rasmussen |
Dato : 22-05-02 14:18 |
|
Dennis Pedersen wrote:
> Jeg skal via et lille shell script have oprettet nogle filer, men nogle af
> disse filer indeholder #! hvilket er grisefy i /bin/sh reci så vidt jeg
> kan forstå. Er der nogen måde jeg kan omgåes dette på eller?
Det har du fået forkert fat i. Sekvensen '#!' har en speciel betydning, hvis
den kommer først i en fil /og/ du forsøger at udføre filen. Ellers ikke.
> Ydermere hvordan kan jeg på en nem måde indsætte et tegn i starten af en
> bestemt fil, på en specifik linje hvor der allerede står noget tekst?
Lad os sige, at du har en fil med flg. indhold:
hej
med
dig
Du vil så gerne have indsat "TEKST" før linien "med". Det gør du sådan
her:
sed '/^med/s/^/TEKST/' filnavn
Forklaring:
/^med/ Find alle linier, der starter (^) med 'med'.
s/^/TEKST/ Lav en søg-og-erstat hvor du erstatter starten
af linien (^) med 'TEKST'.
MVH
-Claus
| |
Klaus Alexander Seis~ (22-05-2002)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 22-05-02 15:15 |
|
Claus Rasmussen skrev:
> Sekvensen '#!' har en speciel betydning, hvis den kommer først
> i en fil /og/ du forsøger at udføre filen. Ellers ikke.
Bortset fra at # er et kommentartegn, således at man ikke får # og
resten af linjen med hvis man forsøger at echo'e #! til en fil.
Hvis shell'en er /bin/bash, vil !'et af og til udløse et "event not
found".
Så hvis man har brug for at echo'e # og !, gør man klogt i at
escape tegnene, fx
$ echo \#\!/bin/sh
#!/bin/sh
$ echo '#!/bin/sh'
#!/bin/sh
$
// Klaus
--
><> vandag, môre, altyd saam
| |
Claus Rasmussen (22-05-2002)
| Kommentar Fra : Claus Rasmussen |
Dato : 22-05-02 17:51 |
|
Klaus Alexander Seistrup wrote:
> Så hvis man har brug for at echo'e # og !, gør man klogt i at
> escape tegnene, fx
>
> $ echo \#\!/bin/sh
Det er meget nemmere (og mere læseligt) at sætte pinger (') omkring.
Altså: echo '#!/bin/sh' . Gås (") dur' til gengæld ikke.
-Claus
| |
Klaus Alexander Seis~ (22-05-2002)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 22-05-02 18:25 |
|
Claus Rasmussen skrev:
>> $ echo \#\!/bin/sh
>
> Det er meget nemmere (og mere læseligt) at sætte pinger (') omkring.
Det gjorde jeg jo osse lige nedenunder, i det stykke du har klippet væk.
// Klaus
--
><> vandag, môre, altyd saam
| |
Claus Rasmussen (22-05-2002)
| Kommentar Fra : Claus Rasmussen |
Dato : 22-05-02 19:07 |
|
Klaus Alexander Seistrup wrote:
> Det gjorde jeg jo osse lige nedenunder, i det stykke du har klippet væk.
Ups...
Hvad er det man siger - "Gentagelse fremmer forståelsen" ?
-Claus
| |
Dennis Pedersen (22-05-2002)
| Kommentar Fra : Dennis Pedersen |
Dato : 22-05-02 19:16 |
|
"Klaus Alexander Seistrup" <jakabov119@magnetic-ink.dk> wrote in message
news:jakabov+95639d54-14bb-44dd-9bd5-4028afdb1330@news.szn.dk...
> Claus Rasmussen skrev:
>
> > Sekvensen '#!' har en speciel betydning, hvis den kommer først
> > i en fil /og/ du forsøger at udføre filen. Ellers ikke.
>
> Bortset fra at # er et kommentartegn, således at man ikke får # og
> resten af linjen med hvis man forsøger at echo'e #! til en fil.
>
> Hvis shell'en er /bin/bash, vil !'et af og til udløse et "event not
> found".
>
> Så hvis man har brug for at echo'e # og !, gør man klogt i at
> escape tegnene, fx
>
> $ echo \#\!/bin/sh
> #!/bin/sh
> $ echo '#!/bin/sh'
> #!/bin/sh
> $
Aahh...Mange tak det var lige det jeg manglede :)
/Dennis
| |
|
|