Automatisch kompilieren und per sed Source anpassen

enr00

enr00

Routinier
Hi, ich habe in meinem Ordner 3 Dateien:

Ex-4-11.pas
Ex-4-12.pas
Ex-4.13.pas

Das sind Aufgaben für die Schule.
Ich möchte folgendes Script beilegen, das die Pascal-Programme formatiert, denn ich habe im vi tabstop auf 2 gesetzt, und nutze manchmal tab und manchmal space.

mit sed 's/\t/ /g' datei kann ich sie formatieren, d.h. 1 TAB in 2 Leerzeichen umwandeln, was z.b. im Lazarus besser aussieht.

Folgendes Shell-Script funktioniert aber nicht:

Code:
#/bin/bash
fpc Ex-4-11.pas
fpc Ex-4-12.pas
fpc Ex-4-13.pas

mkfifo fifoo

for i in 1 2 3;
do
 sed 's/\t/  /g' Ex-4-1$i.pas > fifoo
 sleep 2
 cat fifoo > Ex-4-1$i.pas
done

Folgendes passiert:
Code:
christophe@~/coding/pascal/info/2$ ll
total 372
drwxr-xr-x 2 christophe christophe   4096 2009-01-14 19:59 backup
-rwxr-xr-x 1 christophe christophe    184 2009-01-14 20:31 compile.sh
-rwxr-xr-x 1 christophe christophe 109228 2009-01-14 20:24 Ex-4-11
-rw-r--r-- 1 christophe christophe   3784 2009-01-14 20:24 Ex-4-11.o
-rw-r--r-- 1 christophe christophe    924 2009-01-14 20:35 Ex-4-11.pas
-rwxr-xr-x 1 christophe christophe 109132 2009-01-14 20:32 Ex-4-12
-rw-r--r-- 1 christophe christophe   3424 2009-01-14 20:32 Ex-4-12.o
-rw-r--r-- 1 christophe christophe    481 2009-01-14 19:31 Ex-4-12.pas
-rwxr-xr-x 1 christophe christophe 109068 2009-01-14 20:32 Ex-4-13
-rw-r--r-- 1 christophe christophe   2968 2009-01-14 20:32 Ex-4-13.o
-rw-r--r-- 1 christophe christophe   1370 2009-01-14 19:58 Ex-4-13.pas
prw-r--r-- 1 christophe christophe      0 2009-01-14 20:32 fifodatei
christophe@~/coding/pascal/info/2$ ./compile.sh 
Free Pascal Compiler version 2.2.0 [2008/04/01] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling Ex-4-11.pas
Linking Ex-4-11
38 lines compiled, 0.0 sec
Free Pascal Compiler version 2.2.0 [2008/04/01] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling Ex-4-12.pas
Linking Ex-4-12
32 lines compiled, 0.0 sec
Free Pascal Compiler version 2.2.0 [2008/04/01] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling Ex-4-13.pas
Linking Ex-4-13
32 lines compiled, 0.0 sec
und auch nach 6 Sekunden warten passiert nichts mehr...

PS, ich weiss, ich könnte auch noch den Kompiliervorgang in die Schleife reinpacken, aber das brauche ich eigtl nicht.

sleep habe ich reingebaut, dass sed die pipe fertig beschrieben hat bevor cat daraus liest.
 
nutze manchmal tab und manchmal space.
Lass das halt? (sprich nutz nur spaces)
Named pipes sind für IPC. Du könntest hier natürlich das beschreiben der pipe in den Hintergrund schicken, aber das ist irgendwie nicht so hart sinnvoll. Warum nimmst du nicht einfach eine temporäre Datei und benennst die dann um? Dann musst du auch nicht sleep benutzen...

Du könntest dein Skript btw auch mal "interaktiv" in der shell ausprobieren, dann musst du auch keine 6 Sekunden warten.. (Halt ein Bisschen Eigeninitiative beim debuggen)
 
@marce : danke das war das was ich gesucht habe.
@Gott_in_schwarz : das mit der temporären Datei ist auch eine gute Idee, das habe ich interaktiv immer so gemacht. Es geht aber halt im vim meist schneller 5 mal tab zu drücken als 10 spaces.
 
Es geht aber halt im vim meist schneller 5 mal tab zu drücken als 10 spaces.
Nein, es geht in vim schneller kein Mal (oder höchstens einmal) Tab zu drücken. (Und einzelne Spaces zum Indentieren schon mal garnicht..)
Pack das mal in deine ~/.vimrc (falls noch nicht vorhanden):
Code:
" Indentation
set smartindent
set autoindent
" Tabs to 2-spaces
set shiftwidth=2
set tabstop=2
set expandtab
set smarttab
Zur Info: in vim einfach ":help smarttab" eingeben.
Ich würde dir btw 4 als tabstop und shiftwidth empfehlen, aber ist ja dein Bier.
Und wenn du in deiner vimrc noch keine Zeile wie "syntax on" hast würde ich die ebenfalls schwerstens empfehlen..
 

Ähnliche Themen

E/A-Fehler (.snapshots is not a btrfs subvolume).

Creative Labs SoundBlaster Audigy 2 ZS unter Debian / Kernel 3.16

XEN 4.3 GMP Problem

Mein Server versendet SPAM in Massen

Debian Routing Problem

Zurück
Oben