Hallo Leute,
eine Frage zu shell-Kommandos:
Ich will aus "*.agr"-Files (grace) "*.eps"-Files machen und dazu grace im batch-mode benutzen.
Wegen der vielen Optionen schreibe ich ein skript (wie elegant) mit den Eingabedateien als Parameter.
Wie muss mein shell-skript nun aussehen, damit:
1. die Endung der Ausgabedatei "eps" wird (wie kann ich also von der eingabevariablen die letzten vier zeichen abtrennen)
und viel wichtiger
2. beim benutzen von wildcards das skript nicht nur die erste datei bearbeitet und dann aufhoert :--(
Es muss nicht bash sein, es geht auch perl oder werweisswas (davon habe ich nur noch weniger Ahnung)
Danke
Jan
______________________________________________________________________________ Jan Eichhorn eichhorn@rcs.urz.tu-dresden.de ______________________________________________________________________________
am Wed, dem 02.05.2001, um 20:57:04 +0200 mailte eichhorn folgendes:
- die Endung der Ausgabedatei "eps" wird (wie kann ich also von der
eingabevariablen die letzten vier zeichen abtrennen)
"man basename" wäre ein Stichwort, oder "sed -e 's/....$//'"
und viel wichtiger
- beim benutzen von wildcards das skript nicht nur die erste datei
bearbeitet und dann aufhoert :--(
#!/usr/bin/bash # Last modification: Mit Mai 2 21:49:15 CEST 2001
for i in *.agr; do base=`basename $i .agr`; # nun hast Du Deine Datei ohne Endung in $base done
Andreas
On Wed, May 02, 2001 at 08:57:04PM +0200, eichhorn wrote:
Ich will aus "*.agr"-Files (grace) "*.eps"-Files machen und dazu grace im batch-mode benutzen.
Wegen der vielen Optionen schreibe ich ein skript (wie elegant) mit den Eingabedateien als Parameter.
Wie muss mein shell-skript nun aussehen, damit:
- die Endung der Ausgabedatei "eps" wird (wie kann ich also von der
eingabevariablen die letzten vier zeichen abtrennen)
und viel wichtiger
- beim benutzen von wildcards das skript nicht nur die erste datei
bearbeitet und dann aufhoert :--(
Du kannst mit einer for-schleife über alle Files mit namen *.agr iterieren. Folgendes Skript gibt einfach die Namen aller .agr-files aus:
#!/bin/bash for i in *.agr ; do echo "$i" done
Umbenennen aller *.agr in *.eps geht so:
#!/bin/bash for i in *.agr ; do mv "$i" "${i%.agr}.eps" done
(womit auch das Abschneiden der Endung geklärt wäre)
Mit den zwei Beispielen und "man bash" sollte sich dein Problem leicht lösen lassen.
Reinhard
On Wed, May 02, 2001 at 08:57:04PM +0200, eichhorn wrote:
Hallo Leute,
eine Frage zu shell-Kommandos:
Ich bin zwar nicht der Profi, aber das könnte ich noch hinkriegen.
Ich will aus "*.agr"-Files (grace) "*.eps"-Files machen und dazu grace im batch-mode benutzen.
Wegen der vielen Optionen schreibe ich ein skript (wie elegant) mit den Eingabedateien als Parameter.
Wie muss mein shell-skript nun aussehen, damit:
- die Endung der Ausgabedatei "eps" wird (wie kann ich also von der
eingabevariablen die letzten vier zeichen abtrennen)
echo $EINGABEVARIABLE | sed 's/.agr/.eps/'
dürfte eigentlich funktionieren.
und viel wichtiger
- beim benutzen von wildcards das skript nicht nur die erste datei
bearbeitet und dann aufhoert :--(
for $i in `ls *`
Die genaue Syntax und die ganzen Semikolons mußt du dir mal im Manual zusammensuchen.
Es muss nicht bash sein, es geht auch perl oder werweisswas (davon habe ich nur noch weniger Ahnung)
dann laß es lieber, es sei denn jemand serviert dir eine komplette Lösung.
Danke
Jan
gern geschehen, Ulf
lug-dd@mailman.schlittermann.de