Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 15. Nov 2018 3:02

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 08. Feb 2007 14:32 
Offline

Registriert: 08. Feb 2007 14:30
Beiträge: 6
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08. Feb 2007 14:58 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
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.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08. Feb 2007 15:18 
Offline

Registriert: 08. Feb 2007 14:30
Beiträge: 6
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 :lol: !!!

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08. Feb 2007 22:36 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
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.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09. Feb 2007 10:26 
Offline

Registriert: 08. Feb 2007 14:30
Beiträge: 6
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09. Feb 2007 12:11 
Offline

Registriert: 08. Feb 2007 14:30
Beiträge: 6
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09. Feb 2007 14:00 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 14. Jan 2000 15:37
Beiträge: 699
Wohnort: Jülich
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..."


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09. Feb 2007 14:04 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
$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.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de