0

以下代码在bash.

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

输出是

variable $sms=SMSFile
variable $email=EmailSubj

但我需要把它写在shNOT中bash。如果我在sh其中执行相同的命令会给我错误

sh: 3: Bad substitution

这是由于${!x}. 我查阅了手册,sh其中没有说明有关此类参数扩展的任何内容。所以sh不支持我相信。如果不是如何使用变量变量sh

4

1 回答 1

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

shdash中。

于 2013-09-06T06:55:27.570 回答