分页: 1 / 1

如何处理变量名是变量的情况?

发表于 : 2012-04-24 16:51
zhouwei400
比如是说一个函数有许多参数 我要通过一个变量来访问其中一个参数
例如 当变量i 等于 2时我就把 $3 赋值给 另一个变量temp 我google了一下,似乎是用eval 但是总是出错

代码: 全选

temp=eval $`expr $i + 1`
输出为
line 19: $2: command not found
用的是bash 大家能告诉我怎么办吗?

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-24 17:06
jtshs256
纯数字能做变量名么……

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-24 17:10
zhouwei400
jtshs256 写了:纯数字能做变量名么……
不是自己声明的,函数的参数就是通过$1 $2 来访问的

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-24 17:50
lilydjwg

代码: 全选

eval "temp=$`expr $i + 1`"
这样行不?
PS: 纯数字可以作变量的。

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-24 18:09
zhouwei400
lilydjwg 写了:

代码: 全选

eval "temp=$`expr $i + 1`"
这样行不?
PS: 纯数字可以作变量的。
行了 ,非常感谢 :em11

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-25 23:32
zhouwei400
又有新问题了,要是参数数目大于10怎么办呢?

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-25 23:37
lilydjwg
zhouwei400 写了:又有新问题了,要是参数数目大于10怎么办呢?

代码: 全选

${11}

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-25 23:43
zhouwei400
lilydjwg 写了:
zhouwei400 写了:又有新问题了,要是参数数目大于10怎么办呢?

代码: 全选

${11}
可是这样写还是会报错啊:

代码: 全选

eval ”temp=${`expr $i + 1`}“

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-26 0:25
lilydjwg

代码: 全选

eval "temp=\${`expr $i + 1`}"

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-26 5:51
aerofox
其实很多情况下都不需要这种处理方法。
考虑用 shift 吧。

Re: 如何处理变量名是变量的情况?

发表于 : 2012-04-27 12:43
zhouwei400
lilydjwg 写了:

代码: 全选

eval "temp=\${`expr $i + 1`}"
恩,这是可行的
aerofox 写了:其实很多情况下都不需要这种处理方法。
考虑用 shift 吧。
最终用shift解决问题了