2013-09-06 1 views
0

Le code suivant s'exécute correctement sur bash.variables variables dans sh ou dash

sms="SMSFile" 
email="EmailSubj" 
for x in sms email; do echo variable \$$x=${!x}; done; 

sortie est

variable $sms=SMSFile 
variable $email=EmailSubj 

Mais je dois l'écrire dans sh PAS bash. si j'exécute même commande en sh il me donne l'erreur

sh: 3: Bad substitution 

Cela est dû à ${!x}. J'ai regardé le manuel de sh qui ne dit rien sur l'expansion de ce paramètre. Donc sh ne le supporte pas je crois. Si non, comment utiliser les variables variables dans sh

Répondre

3

Je ne pense pas que vous avez d'autre choix que d'utiliser eval.

qui suit:

sms="SMSFile" 
email="EmailSubj" 
for x in sms email; do eval val=\$$x; echo variable \$$x=$val; done; 

devrait se traduire par:

variable $sms=SMSFile 
variable $email=EmailSubj 

dans les deux sh et dash.