Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Shell Scripting - Befehl für replcstr unter Linux???

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
idlaW



Anmeldungsdatum: 08.02.2007
Beiträge: 6

BeitragVerfasst am: 08. Feb 2007 14:32   Titel: Shell Scripting - Befehl für replcstr unter Linux???

Hallo zusammen,

ich sitze gerade an einem größeren Problem und zwar soll ich zwei Windows Batch Dateien unter Linux zum laufen bekommen

Ich kämpfe schon seit Tagen mit den Scripts herum aber komme nur ganz langsam vorwärts. Nun ist der Punkt erreicht an dem ich nicht mehr weiter weiß

Folgenden Parameter möchte ich nun von Windows Batch in Linux Script umwandeln:

replcstr "%2~" "%2~~" %%Variable%% %Variable%

(Hinter %%Variable%% verbirgt sich ein Laufwerkspfad - zur Info)

Hat jemand eine Idee wie ich dies unter Linux umsetzen kann.

Bin wirklich um jeden hilfreichen Tipp froh

Vielen Dank im voraus

Gruß
Steffen
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 08. Feb 2007 14:58   Titel:

Erstmal gibt es kein "Linux Script", sondern etliche Skriptsprachen. Ich nehme an, du möchtest/sollst die bash verwenden.

Es ist vermutlich einfacher, eine Lösung zu finden, wenn du beschreibst/ausprobierst, was der Befehl tun soll. replcstr scheint zumindest kein internes Kommando von cmd.exe zu sein, so dass mir die genaue Semantik dieses Aufrufs unklar ist.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

idlaW



Anmeldungsdatum: 08.02.2007
Beiträge: 6

BeitragVerfasst am: 08. Feb 2007 15:18   Titel:

Hi,

sorry, habe vergessen dass replcstr ein zusätzliches Programm ist (replcstr.exe).
Denke aber dass das kleine Programm bei Programmieren sehr bekannt ist.

Der Befehl soll gute Frage was er eigentlich soll Laughing !!!

Oder besser gesagt ich suche ein Programm unter Linux, das mir Variablen in einer Datei ersetzt.

Sorry, falls noch unklar kann ich dies erst am Montag beantworten da der Mitarbeiter leider im Moment im Urlaub ist.

Trotzdem Danke erstmal
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 08. Feb 2007 22:36   Titel:

Für Stringersetzungen in Dateien gibt es verschiedene Möglichkeiten. Eine Möglichkeit ist es, sed zu verwenden.

Code:

$ sed "s/ALTER_STRING/NEUER_STRING/g" <Quelldatei >Zieldatei

Man kann mehrere Ersetzungen kombinieren:
Code:

$ sed "s/ALTER_STRING_1/NEUER_STRING_1/g;s/ALTER_STRING_2/NEUER_STRING_2/g;" <Quelldatei >Zieldatei


Wenn man keine festen Strings verwenden will, geht das ebenfalls, da die bash vor dem Aufruf des sed ja alle Parameter und Variablen in der Befehlszeile ersetzt.

Code:

#!/usr/bin/bash
VAR='bla bla'
sed "s/ALTER_STRING_1/$1/g;s/ALTER_STRING_2/$VAR/g;" <Quelldatei >Zieldatei


Das richtige Quoten (",',\) kann trickreich sein.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

idlaW



Anmeldungsdatum: 08.02.2007
Beiträge: 6

BeitragVerfasst am: 09. Feb 2007 10:26   Titel:

Hi Janka,

vielen Dank für Deine ausführliche Antwort, denke dass diese mir sehr weiterhelfen wird.

Kann ich eigentlich anstatt einer Quelldatei und Zieldatei auch eine Variable benutzen?


Noch eine kleine Frage da ich bis jetzt noch nicht viel unter Linux Programmiert habe:

Du schreibst beim Deinem letzten Beispiel #!/usr/bin/bash kann ich den Befehl auch für #!/bin/sh nehmen?

Vielen Dank im voraus
 
Benutzer-Profile anzeigen Private Nachricht senden

idlaW



Anmeldungsdatum: 08.02.2007
Beiträge: 6

BeitragVerfasst am: 09. Feb 2007 12:11   Titel:

Hi Janka,

jetzt ist mir noch eines unklar und zwar habe ich jetzt folgendes angewendet:

replcstr "%2~" "%2~~" %%Test%% "%Test% (Windows Befehl - replcstr ersetzt Text oder Zeichenketten)

(Hinter %2~ und %2~~ stecken ja zwei Dateien in unterschiedlichen Verzeichnissen)

Im Moment habe ich es unter Linux so geschrieben:
sed "s/%%Test%%/ %Test%/g" <Quelldatei >Zieldatei

Kann ich jetzt z.B. anstatt <Quelldatei auch <$Variable schreiben???
Sprich einfach die Variable auslesen?

Vielen Dank im voraus
 
Benutzer-Profile anzeigen Private Nachricht senden

jochen
prolinux-forum-admin


Anmeldungsdatum: 14.01.2000
Beiträge: 699
Wohnort: Jülich

BeitragVerfasst am: 09. Feb 2007 14:00   Titel:

sed liest immer von der Standardeingabe. Aber wenn Du ihm dort den Inhalt der Variablen gibst, geht das auch:
Code:
echo $VAR | sed 's/suchtext/ersetzungstext/g' >zieldatei


Jochen
_________________
Die grösste Lüge der EDV? "Mal eben..."
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 09. Feb 2007 14:04   Titel:

$irgendwas wird immer zum Inhalt der Variablen "irgendwas" expandiert, es sei denn, man quotet es z.B. mit '$irgendwas' oder \$irgendwas. Das kann man überall im Skript anwenden.

#! in der ersten Zeile ist eine Kennzeichnung, dass jetzt der Pfad des für das Skript zu verwendene Interpreter folgt. Da sollte /usr/bin/bash stehen, wenn man bash-Syntax verwendet. Die Bourne-Shell (meist /bin/sh) ist älter und kann nicht so viel. Bei Linux-Systemen ist meist auch /bin/sh einfach ein Link auf die Bash, das muss aber nicht so sein (bei BSD ist das z.B. nicht so), und kann dann zu Problemen führen.

Es gibt noch andere "tolle" Shells: ksh (pdksh), tcsh (für Skripte bäh!) oder zsh. Die sind aber eher selten installiert.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy