pertze
02-05-2006, 21:09
Hallo nochmal,
ich habe ein Skript, dass verschiedene Parameter mit Schaltern akzeptiert.
Zum Beispiel:
./delItem -u pertze # oder
./delItem -g users # oder
./delItem -m machine1$
Man kann also entweder einen User, eine Gruppe oder einen Maschinenaccount löschen. Beim Aufruf soll aber immer nur ein Parameter gesetzt sein. Nun habe ich in der ersten if-Bedingung alle Kombinationen aus den 3 Parametern abgefangen, so dass sich das Skript beendet sobald mehr als ein Paramter gesetzt ist. Meine Frage ist nun, ob man das auch besser, eleganter lösen kann. Denn bei mehr als 3 Parametern wird die if-Bedingung ja ziemlich umfangreich ;)
#!/usr/bin/perl -w
use Getopt::Std;
%OPTION = ();
getopts("u:g:m:", \%OPTION);
if(($OPTION{u} && $OPTION{g} && $OPTION{m}) || ($OPTION{u} && $OPTION{g}) || ($OPTION{g} && $OPTION{m}) || ($OPTION{u} && $OPTION{m})) {
exit(1);
}
if($OPTION{u}){
system("userdel $OPTION{u}");
}
if($OPTION{g}){
system("groupdel $OPTION{g}");
}
if($OPTION{m}){
system("userdel $OPTION{u}");
}
Danke schonmal und Gruß,
pertze
ich habe ein Skript, dass verschiedene Parameter mit Schaltern akzeptiert.
Zum Beispiel:
./delItem -u pertze # oder
./delItem -g users # oder
./delItem -m machine1$
Man kann also entweder einen User, eine Gruppe oder einen Maschinenaccount löschen. Beim Aufruf soll aber immer nur ein Parameter gesetzt sein. Nun habe ich in der ersten if-Bedingung alle Kombinationen aus den 3 Parametern abgefangen, so dass sich das Skript beendet sobald mehr als ein Paramter gesetzt ist. Meine Frage ist nun, ob man das auch besser, eleganter lösen kann. Denn bei mehr als 3 Parametern wird die if-Bedingung ja ziemlich umfangreich ;)
#!/usr/bin/perl -w
use Getopt::Std;
%OPTION = ();
getopts("u:g:m:", \%OPTION);
if(($OPTION{u} && $OPTION{g} && $OPTION{m}) || ($OPTION{u} && $OPTION{g}) || ($OPTION{g} && $OPTION{m}) || ($OPTION{u} && $OPTION{m})) {
exit(1);
}
if($OPTION{u}){
system("userdel $OPTION{u}");
}
if($OPTION{g}){
system("groupdel $OPTION{g}");
}
if($OPTION{m}){
system("userdel $OPTION{u}");
}
Danke schonmal und Gruß,
pertze