PDA

Vollständige Version anzeigen : Input fuer ksh script aus file


Gilbert Rebhan
07-18-2007, 07:01 PM
Hallo,

bin absoluter shellscript Newbie und
habe folgendes Problem =

Moechte ein kshscript mit
einem inputfile versorgen.
Ideal waere das Propertyformat,
d.h.
key=value
weil das schon vorhanden ist.

Das Inputfile hat folgendes Format =

jobid="4711"
userid="007"
notes="whatever"
modul_0="foobar_appl"
modul_0_version="r_1_2_3_4"
modul_1="foobar_sql"
modul_1_version="r_1_2_3_4_a"
module=$modul_0 $modul_1


mein Testscript =

#! /bin/ksh

.. /home/rebse/input.params

print "JobID = $jobid"
print "UserID = $userid"
print "Notes = $notes

print $module

for i in $module
do
print "Modulname = $i"
print " Version = $i_version"


aber die Version in der for Schleife kommt nicht rueber, d.h.
alle single Parameter key=value funzen,
aber wie komm ich ueber eine Liste an alle
modul_x und modul_x_version, soll heissen ich
moechte ueber eine Liste module iterieren und
darueber alle modul_x und modul_x_version ansprechen
koennen.

Habe auch schon versucht mit arrays im inputfile
zu arbeiten, nach dem Schema jedes Array enthaelt
einen Moduldatensatz = Name + Version ,also

modul_0=( foobar_appl r_1_2_3_4 )
modul_1=( foobar_sql r_1_2_3_4_a )

aber da kam erstens immer eine Fehlermeldung
'unexpected '(' at line ... '

und zweitens hab ich nichts darueber gefunden,
ob es moeglich ist ein Array mit Arrays zu nutzen
und dann

module= ( ${#modul_0} ${#modul_1} )

und dann spaeter

for i in $module
do
print "Modulname = ${i[0]}"
print "Version = ${i[1]}"
done

Irgendwelche Ideen ??
Betriebssytem AIX 5.x

Gruss, Gilbert

Daniel Rock
07-18-2007, 08:47 PM
Gilbert Rebhan <mailforgilbert*gmx.de> wrote:
> print " Version = $i_version"

eval "print \"Version = \$${i}_version\""


--
Daniel

Gilbert Rebhan
07-20-2007, 06:41 PM
Daniel Rock wrote:
> Gilbert Rebhan <mailforgilbert*gmx.de> wrote:
>> print " Version = $i_version"
>
> eval "print \"Version = \$${i}_version\""
>
>

BINGO - Du hast mir den Tag gerettet :-)))
Besten Dank fuer die kompetente Antwort!!

Gilbert