z.Bsp
command param1:param2:param3
command ist ein shellscript, mit dem ich nun param1 bis param2 auswerten will ... .
kann mir da jemand helfen ?
es gehen auch die versionen der Eingabe (ist mir egal, solange die drei parameter übergeben werden):
command param1 param2 param3 (vielleicht die ungünstigste version)
command -param1 bla -param2 blabla -param3 -blablabla
ich hoffe das ist verständlich
danke gurus
parameter auswerten
Re: parameter auswerten
Nicht schwer. Deine Shell bekommt einen Wert übergeben, der durch ":" getrennt einzelne Parameter enthält. Dann mach das so:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/bash
set `echo ${1//:/ }`
for ARG
do
echo "Ein Argument: $ARG"
done
</font><hr></pre></blockquote>
Das echo-Kommando gibt den Inhalt des ersten Argumentes aus, allerdinsg werden vorher alle Doppelpunkte durch Leerzeichen ersetzt (man bash unter "Parameter Substitution"). set setzt die so entstandenen Parameter, als wären sie der Shell beim Aufruf übergeben worden, und die for-Schleife ackert dann Parameter für Parameter ab.
War's das, was Du wolltest?
Jochen
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/bash
set `echo ${1//:/ }`
for ARG
do
echo "Ein Argument: $ARG"
done
</font><hr></pre></blockquote>
Das echo-Kommando gibt den Inhalt des ersten Argumentes aus, allerdinsg werden vorher alle Doppelpunkte durch Leerzeichen ersetzt (man bash unter "Parameter Substitution"). set setzt die so entstandenen Parameter, als wären sie der Shell beim Aufruf übergeben worden, und die for-Schleife ackert dann Parameter für Parameter ab.
War's das, was Du wolltest?
Jochen
Re: parameter auswerten
Übernimm's mal mit Copy'n'Paste, es funzt hier einwandfrei. Welche Fehlermeldung kriegst Du bei welchem Aufruf?
Jochen
Jochen
Re: parameter auswerten
paß auf
ich brauche dies:
[sh]#echotest 13333 und das
Der erste Paramterer ist '13333', der zweite 'und', der Dritte 'das'.
so soll das Programm arbeiten ...
bei deriner Version arbeitet er doch die Anzahl der Eingaben ab und gibt sie NACHEINANDER aus .. ich brauch sie aber AUF EINMAL )
z.Bsp.:
[sh]#isdn.sh start Meier
dieses Script soll isdnctrl dial ippp3 ausführen
start = dial
ippp0 = Schulze
...
...
...
ippp3 = Meier
ist nur mal einfach erklärt.
Wie gesagt die Eingabe
isdn.sh start:Meier wäre auch kein Problem ich muß das nur verarbeiten können ...
Bitte frag mich nicht, warum ich das so umständlich machen will
nur soviel: isdn.sh ist Bestandteil eines anderen scripts
Danke
ich brauche dies:
[sh]#echotest 13333 und das
Der erste Paramterer ist '13333', der zweite 'und', der Dritte 'das'.
so soll das Programm arbeiten ...
bei deriner Version arbeitet er doch die Anzahl der Eingaben ab und gibt sie NACHEINANDER aus .. ich brauch sie aber AUF EINMAL )
z.Bsp.:
[sh]#isdn.sh start Meier
dieses Script soll isdnctrl dial ippp3 ausführen
start = dial
ippp0 = Schulze
...
...
...
ippp3 = Meier
ist nur mal einfach erklärt.
Wie gesagt die Eingabe
isdn.sh start:Meier wäre auch kein Problem ich muß das nur verarbeiten können ...
Bitte frag mich nicht, warum ich das so umständlich machen will
nur soviel: isdn.sh ist Bestandteil eines anderen scripts
Danke
Re: parameter auswerten
du kannst deinen befehl und die parameter ganz normal eingeben:
befehl par1 par2 par3
skript <befehl> gibt die parameter dann folgerndermassen aus:
echo $1
echo $2
echo $3
echo $1 $2 $3
$1 enthält 1 parameter
$2 ...
befehl par1 par2 par3
skript <befehl> gibt die parameter dann folgerndermassen aus:
echo $1
echo $2
echo $3
echo $1 $2 $3
$1 enthält 1 parameter
$2 ...
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)
Re: parameter auswerten
sorry, aber mit dieser Lösung kann ich rein gar nichts anfangen
script funktioniert hier nicht.
Versteht denn keiner, was ich will ?
Ich dachte an eine Lösung mit 'split' ????
Es muß doch irgendwie gehen, daß ich die parameter hinter meinem shellscript irgendwie verwenden kann, Mit einem geht das ja hervorragend
Das ist mir wichtig
Danke
script funktioniert hier nicht.
Versteht denn keiner, was ich will ?
Ich dachte an eine Lösung mit 'split' ????
Es muß doch irgendwie gehen, daß ich die parameter hinter meinem shellscript irgendwie verwenden kann, Mit einem geht das ja hervorragend
Das ist mir wichtig
Danke
Re: parameter auswerten
Tja, wie Du gesagt hast: Hier versteht wohl wirklich keiner, was Du genau willst. Noch'n Anlauf...
Alle übergebenen Parameter am Stück erhältst Du mit $* im Skript. Für Spezialfälle (wie Blanks in den einzelnen Argumenten) verwendet man auch "$@".
An die Argumente einzeln kommst Du mit $<i>n</i>, mit n=1..9.
Damit kannst Du Deine Parameter einzeln auswerten und passende Optionen zu Deinen anderen Kommandos zusammenbasteln:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">}
case "$1" in
start) COMMAND=dial ;;
stop) COMMAND=hangup ;;
*) echo "Fehler!" >&2 ;;
esac
case "$2" in
[Ss]chulze) INTERFACE=ippp0 ;;
[Mm]ueller) INTERFACE=ippp1 ;;
....
[Mm]eier) INTERFACE=ippp3 ;;
*) echo "Kenn ich nicht" >&2 ;;
esac
isdnctrl $COMMAND $INTERFACE
</font><hr></pre></blockquote>
Das ist alles, was ich aus Deinen Postings herauslesen kann. Sollte dies wieder danebenlegen, kann ich mir beim besten Willen nicht mehr vorstellen, was Du meinst.
Wir können hier nicht Gedankenlesen; nur weil Du Dein Projekt total im Überblick hast und weisst, was Du willst, können wir es noch lange nicht erahnen. Die Infos müssen schon von Dir kommen!
Jochen
Alle übergebenen Parameter am Stück erhältst Du mit $* im Skript. Für Spezialfälle (wie Blanks in den einzelnen Argumenten) verwendet man auch "$@".
An die Argumente einzeln kommst Du mit $<i>n</i>, mit n=1..9.
Damit kannst Du Deine Parameter einzeln auswerten und passende Optionen zu Deinen anderen Kommandos zusammenbasteln:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">}
case "$1" in
start) COMMAND=dial ;;
stop) COMMAND=hangup ;;
*) echo "Fehler!" >&2 ;;
esac
case "$2" in
[Ss]chulze) INTERFACE=ippp0 ;;
[Mm]ueller) INTERFACE=ippp1 ;;
....
[Mm]eier) INTERFACE=ippp3 ;;
*) echo "Kenn ich nicht" >&2 ;;
esac
isdnctrl $COMMAND $INTERFACE
</font><hr></pre></blockquote>
Das ist alles, was ich aus Deinen Postings herauslesen kann. Sollte dies wieder danebenlegen, kann ich mir beim besten Willen nicht mehr vorstellen, was Du meinst.
Wir können hier nicht Gedankenlesen; nur weil Du Dein Projekt total im Überblick hast und weisst, was Du willst, können wir es noch lange nicht erahnen. Die Infos müssen schon von Dir kommen!
Jochen