+ -
当前位置:首页 → 问答吧 → 简单的赋值都会出错?!奇怪了

简单的赋值都会出错?!奇怪了

时间:2011-06-22

来源:互联网

实在没找出来哪里有问题,大家帮我看看了,谢谢。这是我简化出来的脚本。

#!/usr/bin/ksh

Athing=1
Bthing=1

set -A things A B

for char in ${things[*]}
do
   ${char}thing=0
   echo ${char}thing
done

结果如下:
tmp.ksh
tmp.ksh[10]: Athing=0:  not found
Athing
tmp.ksh[10]: Bthing=0:  not found
Bthing

到底哪里出了问题? 我将${char}thing两边加上引号还是报错。环境是ksh, solaris

作者: KingRight   发布时间: 2011-06-22

ksh啊  没用过 不懂    只能帮顶了

作者: caoshaocong   发布时间: 2011-06-22

ksh  和  bash 的语法基本一样的。

作者: KingRight   发布时间: 2011-06-22

搞定了,把
${char}thing=0
改成
set ${char}thing=0
就没问题了!

不知道为什么这里需要加set,你看上边的Athing=1都不需要。why

作者: KingRight   发布时间: 2011-06-22



QUOTE:
实在没找出来哪里有问题,大家帮我看看了,谢谢。这是我简化出来的脚本。

#!/usr/bin/ksh

Athing=1
...
KingRight 发表于 2011-06-22 15:16



不知你要做什么...
   eval "${char}thing=0"
   eval "echo \$${char}thing"

作者: jason680   发布时间: 2011-06-22



QUOTE:
不知你要做什么...
   eval "${char}thing=0"
   eval "echo \$${char}thing"
jason680 发表于 2011-06-22 15:39




我要在循环中把Athing和Bthing的值重设成 0

作者: KingRight   发布时间: 2011-06-22



QUOTE:
不知你要做什么...
   eval "${char}thing=0"
   eval "echo \$${char}thing"
jason680 发表于 2011-06-22 15:39




我要在循环中把Athing和Bthing的值重设成 0

作者: KingRight   发布时间: 2011-06-22

用 set 虽然没报错, 但是Athing和Bthing的值还是1,没有被改变。
还是老大jason680的eval可行,多谢了

作者: KingRight   发布时间: 2011-06-22