URL: https://www.overclockers.at/linux/bash-scriptproblem_122379/page_1 - zur Vollversion wechseln!
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.
zerwürfelt sich zuCode:echo ${JOB_OPTS_USERADD_${JOBNAME}}
Zitat${JOB_OPTS_USERADD_${JOBNAME}}: bad substitution

Vielleicht gehts, wenn du den fertigen Namen in eine Zwischenvariable speicherst, dann löst du die Schachtelung auf.
kannst du das problem vielleicht kurz an einem beispiel erläutern? ich meine zwar zu verstehen was du meinst, aber sicher bin ich nicht 
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 }
- die echo-Anweisung ist nat. nur zu debug-zwecken im Skript, wird in der "finalen" Version dann durch Useradd mit entsprechenden Parametern ersetzt.Code:echo $JOB_OPTS_USERADD_${JOBNAME}
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 }
Danke! 
Werd's damit versuchen, sieht nach der passenden Lösung aus. Hab dich lieb :x 
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025