LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 848|回复: 3

如何用 for 进行赋值

[复制链接]
发表于 2008-3-1 16:15:28 | 显示全部楼层 |阅读模式
如下面的脚本:

#!/bin/bash
for ((i=0;i<100;i=i+1));do
        str$i=$i
done

运行则提示:

str0=0: command not found
str1=1: command not found
str2=2: command not found
.................
str99=99: command not found

显然是 bash 把 strXX=XX 当成命令执行了。如何实现赋值而不是把 strXX=XX 当做命令执行?
发表于 2008-3-1 16:22:40 | 显示全部楼层
eval str$i=$i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-1 16:44:58 | 显示全部楼层
可是加上 case 就不行了

#!/bin/bash
read number1 number2

for i in 1 2;do
        case $number$i in
                1)eval str$i=1;;
                2)eval str$i=2;;
                *)eval str$i=3;;
        esac
done

echo $str1 $str2

无论输入什么数字,结果总是 1 2
回复 支持 反对

使用道具 举报

发表于 2008-3-1 21:59:23 | 显示全部楼层
你还是用数组吧。
你的$number$i
是两个变量$number和$i, $number是空,当然只有1和2
要不就用
eval case \$number$i in
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表