linux-l: Kommandozeilen-Optionen in Bash auslesen

Mario Thaten mario at thaten.de
Di Feb 20 13:20:39 CET 2001


Hallo Experten,

ich hab mal eine Frage zu nem simplen Bash-Script. Ziel ist es, die
Inhalte der Kommandozeilen-Parameter in ein Array auszulesen. Der mal
von Rolf vorgeschlagene Weg mit "declare -a opts" ist unguenstig, da
ich gern beim Aufruf

./script "Das erste Argument" argumentzwei ...

"das erste Argument" als 1. Parameter im Array und nicht in 3 Parameter
aufgeteilt haette. So weit, so gut. Ich habe folgendes Skript geschrieben:

--8<--

#!/bin/sh

i=1
while [ "$i" -le $# ]; do
    eval echo \$$i
    opts[$i]=`eval echo \$$i`
    i=$[$i+1]; # increase
done
echo ${opts[1]} "|" ${opts[2]}

-->8--

Das erste eval funktioniert optimal, es werden die Parameter genau so
ausgegeben, wie ich mir das wuensche. Das zweite, also eigentlich
wichtige produziert die Ausgabe von "$$", also die pid, und haengt
hinten noch ein i dran. Ich koennte mir nun vorstellen, dass das
an nem Variablenexportproblem haengt, wie kuerzlich schon mal in der
Liste erwaehnt, kann aber keine Funktion zur Loesung benutzen, da diese,
soweit ich weiss, keinen Zugriff auf die globalen Programmoptionen hat.

Wahrscheinlich sitze ich zwei Zentimeter vor der Loesung und blicks
einfach nicht. Hilfe! :) Sofern ich "man bash_builtins" ueberblicke,
kann mir getopts bei diesem Problem nicht helfen.

Ich bin dankbar fuer jede Anregung, ausser die, dass ich doch bitte
Perl benutzen soll. ;)

Gruss und Danke, Mario

-- 
 .~.    Mario Thaten (mario at thaten.de)
 /V\    
/( )\   "There are just 2 rules in life:
 ^ ^     Always be yourself, but never mind to change."



Mehr Informationen über die Mailingliste linux-l