B
Bad_Rockk
Mitglied
Hi,
so habe die zwei if schleifen angepasst. Habe auch alle Tabulatoren durch Leerzeichen ersetzt. Let habe ich teilweise raus genommen.
Der Code läuft jetzt ohne Fehler durch, was raus kommt stimmt aber noch nicht. Aber dadrauf kann ich jetzt erstmal aufbauen.
Waren also mehrere Fehler die sich aneinander gereiht hatten. Da bei den if Befehlen keine Fehlermeldung kam, dachte ich die sind richtig bzw. funktionieren so auch.
Vielen Dank fürs erste. Werden bestimmt noch weitere Fragen auftauchen...
Gruß Tim
jetzt geht er!! 2 / hatten noch gefehlt.
Gruß Tim
so habe die zwei if schleifen angepasst. Habe auch alle Tabulatoren durch Leerzeichen ersetzt. Let habe ich teilweise raus genommen.
Der Code läuft jetzt ohne Fehler durch, was raus kommt stimmt aber noch nicht. Aber dadrauf kann ich jetzt erstmal aufbauen.
Waren also mehrere Fehler die sich aneinander gereiht hatten. Da bei den if Befehlen keine Fehlermeldung kam, dachte ich die sind richtig bzw. funktionieren so auch.
Vielen Dank fürs erste. Werden bestimmt noch weitere Fragen auftauchen...
Gruß Tim
Code:
#!/bin/sh
#
set -x
SKRIPT_DIR=`dirname $0`
INPUT_FILE=$SKRIPT_DIR/eingabe.txt
AWK_FILE=$SKRIPT_DIR/ersetzen.awk
VARIA_FILE=$SKRIPT_DIR/tabelle.txt #Werte durch Tab trennen
TEMPLATE_FILE=$SKRIPT_DIR/template.txt
RESULT_DIR=$SKRIPT_DIR/results
echo SKRIPT_DIR : $SKRIPT_DIR
echo VARIA_FILE : $VARIA_FILE
echo TEMPLATE_FILE : $TEMPLATE_FILE
#Anzahl der Variationen auslesen
NR_VARIA=`awk '{if (NF>0) print}' $VARIA_FILE | awk 'END {print NR-1}'`
echo $NR_VARIA
#Namen der Variablen auslesen
VAR_NAMES=`awk '{if (NR==1) print}' $VARIA_FILE`
echo $VAR_NAMES
##########################################################################
# AWK_FILE zusammenbasteln (muss nur einmal gemacht werden)
##########################################################################
echo "#!/bin/awk -f" > $AWK_FILE
echo >> $AWK_FILE
echo "{" >> $AWK_FILE
for i in $VAR_NAMES; do
echo "gsub(/$i/,$i,\$0)" >> $AWK_FILE
done
echo "print \$0" >> $AWK_FILE
echo "}" >> $AWK_FILE
START=1
j=$START
# Jede Zeile ab der zweiten aus VARIA_FILE
# auslesen und den Variablennamen zuordnen
# solange $j kleiner $NR_VARIA mache ...
while [ $j -le $NR_VARIA ]; do
LAUF=$j
let ZEILE=$j+1
echo
echo "**********************************************************"
echo "* Lauf $LAUF von $NR_VARIA"
echo "**********************************************************"
# VAR_VALUES anhand der aktuellen Zeile definieren
VAR_VALUES=`sed -n "$ZEILE"p $VARIA_FILE`
echo $VAR_VALUES
# Kommandozeile zum Aufruf von AWK_FILE zusammenbasteln. Variablen werden
# als Parameter übergeben. Aufruf erfolgt in der Form:
# "awk -f $AWK_FILE varname1=varvalue1 varname2=varvalue2 $TEMPLATE_FILE > $INPUT_FILE"
k=1
AWK_LINE="awk -f $AWK_FILE "
for i in $VAR_NAMES; do
FS="[ :\t]+"
VAR_VALUE=`echo "$VAR_VALUES" | cut -f $k`
AWK_LINE=`echo $AWK_LINE "$i=$VAR_VALUE "`
let k=$k+1
done
echo
AWK_LINE=`echo $AWK_LINE $TEMPLATE_FILE`
# Erstellen des INPUT_FILE
$AWK_LINE > $INPUT_FILE
# Erstellen des Ergebnis-Verzeichnis
if [ echo find $SKRIPT_DIR -name "results" ="./results" ]; then
rm $RESULT_DIR
fi #else mkdir $SKRIPT_DIR/results
if [ echo find $SKRIPT_DIR -name "results" != ".results"]; then
mkdir $SKRIPT_DIR
fi
LAUF=`echo "$VAR_VALUES" | cut -f 1`
mkdir $RESULT_DIR/L$LAUF
# Bewegen von $INPUT_FILE in das Ergebnis-Verzeichnis
mv $INPUT_FILE $RESULT_DIR/L$LAUF
let j=$j+1
done
# Aufräumen
rm $AWK_FILE
set +x
jetzt geht er!! 2 / hatten noch gefehlt.
Gruß Tim
Zuletzt bearbeitet: