• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Optionen / Argumente exportieren?

pawe

Member
hallo Konsolen-user,

ich arbeite an einem Skript. Dabei verwende ich Funktionen die über Optionen gestartet werden.
Der Befehl soll dann so aussehen (schematisch):
skript -o argument1 argument2 ... argumentx
-o startet über getopts und case die Funktion optFunktion. In dieser werden aber die Argumente gebraucht. Ich habe versucht die Argumente zu exportieren, aber ich fand bis jetzt keine Lösung :cry:
kann mir jemand helfen?
Danke im Vorraus!
 
A

Anonymous

Gast
Code:
OPTION=$(AUSZUFÜHRENDERBEFEHL)
oder
Code:
OPTION=ALLESANDERE
und danach
Code:
export OPTION
zum Beispiel würde
Code:
EDITOR=nano
export EDITOR
"nano" systemweit als Editor für alles festlegen...zb für crontab
 

TeXpert

Guru
rm -rf / schrieb:
zum Beispiel würde
Code:
EDITOR=nano
export EDITOR
"nano" systemweit als Editor für alles festlegen...zb für crontab

quatsch. Du kannst mit export und declare -x das aktuelle Environment und daraus hervorgehende subshells beeinflussen.

jezt zu Pawe:

also Du willst Aufruf: script -o foo foo2 foo3

in dem script soll was ausgeführt werden?
einmal foo dann foo2 dann foo3 oder foo mit Parameter foo2 foo3?

wird jeder Parameter von getopts bearbeitet? schreib mal konkret was Du willst.
 
OP
pawe

pawe

Member
@rm -rf /: Danke, das trift zwar mein Problem nicht. Aber dein Beitrag hat mich inspiriert. Ich stand irgendwie auf dem Schlauch :? Ich möchte die Variable $* exportieren um sie in der subshell nutzen zu können.

@TeXpert: Mit dem Script möchte ich die Bedienung von APT etwas einfacher machen.
Mit den Optionen will ich die Aufgabenstellung steuern. z.B. (vereinfacht) mit der Option -i könnte man istallieren, mit -s suchen, mit -u: update, dann suchen. Im grundegenommen ist es dieses Script, das ich erweitern möchte.
Der Befehl würde dann so aussehen (wieder vereinfacht):
Code:
apt-skript -i acroread gimp
wenn man acrobat reader und gimp installieren möchte.
die Option -i startet dann die Funktion installieren, unter dieser taucht irgendwann der Befehl auf:
Code:
apt-get install $*
So, und da war das Problem: wie bekomme ich alle Parameter (die Anzahl kann ja variiren) für den Apt-Befehl übertragen, also die Variable $*? Wie rm -rf / schon vorgeschlagen hat:
Code:
para=$*
export para
Und ich hab mit while-Schleifen experimentiert :roll:

Danke euch zweien :wink:
 

TeXpert

Guru
ich seh jetzt so spontan nicht warum Du da die Parameter exportieren willst? denn innerhalb der aktuellen shell sind die ja gültig, d.h. irgendwo in dem Bashscript ein
Code:
mach ganz viel

CMD="install"
PARAM=$* 

... mach mehr blödsinn

... abfragen etc


apt-get $CMD $PARAM

.....
end of script
und es funktioniert...
 
OP
pawe

pawe

Member
nochmal AHA! Als ich in einer Funktion apt-get install $* verwendet habe kam die Fehlermeldung, ich hätte kein Packet angegeben. Ich schloss daraus, dass ich exportieren müsste :oops: .
Es langt also die Variable $* umzubenennen (para=$*), da sie beim Start der Funktion anders deffiniert wird.

Danke TeXpert :D
 

TeXpert

Guru
nein das muss nicht sein, ich kann dieses Script problemlos mit
Code:
$ script foo bar
nutzen:

Code:
#!/bin/bash

apt-get install $*
da $* nur eine zeichenkette ist...

Du willst aber u.u. die Parameter noch verwursten... ich glaube eher Du hast andere Probleme mit Deinem Script, da solltest Du mal den ganzen Sermon herzeigen
 
OP
pawe

pawe

Member
Danke für das Angebot TeXpert. Das Script ist aber noch eine Baustelle und ich weiß noch nicht, welche Optionen ich alles einbaue. Bis jetzt habe ich nur rumprobiert und rumgespielt (da meine bash-Kenntnisse nicht die besten sind). Wenn ich eine Struktur reingebracht habe werde ich den Ansatz posten. Aber frühestens übernächste Woche (hab viel zu tun)

Gruß Pawe
 
Oben