2013-09-06 2 views
0

Следующий код выполняет штраф на bash.переменные переменные в sh или тире

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

Выход

variable $sms=SMSFile 
variable $email=EmailSubj 

Но мне нужно, чтобы записать его в sh НЕ bash. если я выполнить ту же команду в sh он дает мне ошибку

sh: 3: Bad substitution 

Это связано с ${!x}. Я просмотрел руководство от sh, которое ничего не говорит о таком расширении параметров. Так что sh этого не поддерживает. Если нет, то как использовать переменные переменные в sh

ответ

3

Я не думаю, что у вас есть возможность использовать eval.

Следующая:

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

должно привести:

variable $sms=SMSFile 
variable $email=EmailSubj 

в обоих sh и dash.

Смежные вопросы