"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Bash-Scriptproblem

COLOSSUS 19.08.2004 - 23:39 563 5
Posts

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
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.

Code:
echo ${JOB_OPTS_USERADD_${JOBNAME}}
zerwürfelt sich zu
Zitat
${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
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Vielleicht gehts, wenn du den fertigen Namen in eine Zwischenvariable speicherst, dann löst du die Schachtelung auf.

DKCH

...
Registered: Aug 2002
Location: #
Posts: 3279
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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Code:
#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
}

Code:
  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
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Indirekte Referenzen auf Variablen ;)
Siehe: http://www.tldp.org/LDP/abs/html/ivr.html
Code:
user_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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Danke! :)

Werd's damit versuchen, sieht nach der passenden Lösung aus. Hab dich lieb :x ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz