Automatisch kompilieren und per sed Source anpassen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von enr00, 14.01.2009.

  1. enr00

    enr00 Routinier

    Dabei seit:
    08.04.2007
    Beiträge:
    275
    Zustimmungen:
    0
    Ort:
    Luxemburg
    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.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 15.01.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    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)
     
  4. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    wieso nicht einfach
    Code:
    sed -i "$regex" $file
    ?
     
  5. enr00

    enr00 Routinier

    Dabei seit:
    08.04.2007
    Beiträge:
    275
    Zustimmungen:
    0
    Ort:
    Luxemburg
    @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.
     
  6. #5 Gott_in_schwarz, 18.01.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    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..
     
Thema:

Automatisch kompilieren und per sed Source anpassen

Die Seite wird geladen...

Automatisch kompilieren und per sed Source anpassen - Ähnliche Themen

  1. WordPress 4.4 »Clifford« passt Bilder automatisch an

    WordPress 4.4 »Clifford« passt Bilder automatisch an: Die Wordpress-Entwickler haben ihre freie Blog-Software in der Version 4.4 veröffentlicht. Der Namensgeber dieser Version ist der 1956 verstorbene...
  2. Mozilla stoppt automatische XULRunner-Generierung

    Mozilla stoppt automatische XULRunner-Generierung: Mozilla hat angekündigt, dass nach dem Erscheinen von Firefox 41 keine Binärpakete von XULRunner mehr automatisch generiert werden. XULRunner...
  3. CrossOver 14.0 installiert Abhängigkeiten automatisch

    CrossOver 14.0 installiert Abhängigkeiten automatisch: CrossOver 14.0 von CodeWeavers, das auf Wine 1.7.25 basiert, bringt für Linux eine neue automatische Konfiguration, die Systemkomponenten...
  4. Wordpress 3.7 führt automatische Updates ein

    Wordpress 3.7 führt automatische Updates ein: Die Wordpress-Entwickler haben ihre in PHP implementierte Blogsoftware in der Version 3.7 veröffentlicht. Wordpress 3.7 ist dem Jazz-Pianisten...
  5. Shell Skript zum automatischen Aufräumen von doppelten Ordnern

    Shell Skript zum automatischen Aufräumen von doppelten Ordnern: Hallo, Ich möchte mir ein Shell Script für folgenden Zweck schreiben. Meine Mutter hat auf Ihrem PC und auf verschiedenen Festplatten viele...