Bash-Scriptproblem
COLOSSUS 19.08.2004 - 23:39 563 5
COLOSSUS
AdministratorGNUltra
|
Ich arbeite grade an einem recht kompakten User-Erstellungsskript fuer meinen Rootserver, das ich möglichst portabel halten will. Das ganze soll als Shellscript innerhalb der Bash abarbeitbar sein. Allerdings stehe ich im Moment vor einem mittels meiner bescheidenen Bashscriptingkenntnisse unlösbarem Problem. Ich habe eine Variable $JOBNAME, die n Werte annehmen kann. Weiters habe ich n Variablen, die als hinteren Teil ihres Variablennamen Strings enthalten, die dem Inhalt von $JOBNAME equivalent sind (Sie heißen folglich $JOB_OPTS_USERADD_${JOBNAME}). Jetzt brauche ich den _Inhalt_ der Variable $JOB_OPTS_USERADD_${JOBNAME} als Argument für useradd - allerdings krieg ich das nicht hin. echo ${JOB_OPTS_USERADD_${JOBNAME}}
zerwürfelt sich zu ${JOB_OPTS_USERADD_${JOBNAME}}: bad substitution Jemand Ideen, wie das zu lösen wäre, ohne case||if||eine andere Skriptsprache zu verwenden? Tia für hilfreiche Hilfe hilfsbereiter Helfershelfer! - colo
|
that
Hoffnungsloser Optimist
|
Vielleicht gehts, wenn du den fertigen Namen in eine Zwischenvariable speicherst, dann löst du die Schachtelung auf.
|
DKCH
...
|
kannst du das problem vielleicht kurz an einem beispiel erläutern? ich meine zwar zu verstehen was du meinst, aber sicher bin ich nicht
|
COLOSSUS
AdministratorGNUltra
|
#Generische Variablen fuer verschiedene JOBS
JOB_OPTS_USERADD_WEBSPACE="-m -g kunde-webspace -s /bin/none $USERNAME"
JOB_OPTS_USERADD_SHELL="-m -g kunde-shell -s /bin/bash $USERNAME"
JOB_OPTS_USERADD_GAMESERVER="-m -g games -s /bin/none $USERNAME"
JOB_OPTS_USERADD_SUUSER="-m -g users,wheel -s /bin/bash $USERNAME"
[...anderweitiger Code...]
user_create()
{
#Eigentliche Erstellungsfunktion fuer Useraccounts (noch non-workable)
job_banner_print
echo "Erstelle User $USERNAME mit Ruleset: $JOBNAME"
echo $JOB_OPTS_USERADD_${JOBNAME}
sleep 10
}
echo $JOB_OPTS_USERADD_${JOBNAME}
- die echo-Anweisung ist nat. nur zu debug-zwecken im Skript, wird in der "finalen" Version dann durch Useradd mit entsprechenden Parametern ersetzt.
|
gue
Addicted
|
Indirekte Referenzen auf Variablen Siehe: http://www.tldp.org/LDP/abs/html/ivr.htmluser_create()
{
#Eigentliche Erstellungsfunktion fuer Useraccounts (noch non-workable)
job_banner_print
echo "Erstelle User $USERNAME mit Ruleset: $JOBNAME"
MYJOB="JOB_OPTS_USERADD_${JOBNAME}"
eval JOB=\$$MYJOB
echo $JOB
sleep 10
}
|
COLOSSUS
AdministratorGNUltra
|
Danke! Werd's damit versuchen, sieht nach der passenden Lösung aus. Hab dich lieb :x
|