免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7082 | 回复: 14
打印 上一主题 下一主题

变量里的变量赋值的问题  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-12 17:44 |只看该作者 |倒序浏览
感冒还没好,看了几小时的书,自己把自己看晕了。
假设以下
  1. var1=AB
  2. var2=CD
  3. var3=var1
复制代码


要求
如果不能直接对var1操作,只能直接对var3操作,怎么样让var1里AB的变量值为var2中的值CD。
即AB=CD表达式成立。
记得,var1不能直操作哦,要用也只能用
  1. echo `$var1`
复制代码
这种方法

论坛徽章:
0
2 [报告]
发表于 2004-07-12 18:10 |只看该作者

变量里的变量赋值的问题

$var3=`eval echo '$'var1`
$echo $var3
CD
???

论坛徽章:
0
3 [报告]
发表于 2004-07-12 21:16 |只看该作者

变量里的变量赋值的问题

哦,我的表达还是不对,看来感冒的确影响思维。
我的意思是在表达式中不准直接出现任何var1这个变量,你可以使用的只有上述条件中的var2和var3,目的是让var1中的变量AB得到字串CD。

有这个想法是我可以通过变通比如var3=`echo $var1`的方式来得到变量里的变量的值,但我却发现没有办法对变量里的变量赋值。

论坛徽章:
0
4 [报告]
发表于 2004-07-12 21:38 |只看该作者

变量里的变量赋值的问题

对变量里的变量赋值

可能吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-07-12 22:17 |只看该作者

变量里的变量赋值的问题

嗯? bj MM 不是提到過 eval 命令了嗎?
樓主或許先用 eval 做 keyword 來搜索一下 shell 版?
若你找不到, 回來告訴我, 我再幫你找找看...

论坛徽章:
0
6 [报告]
发表于 2004-07-13 23:13 |只看该作者

变量里的变量赋值的问题

楼主的意思是不是说赋值等式的左边也是一个可变量?
记得网中人大哥说过(是不是说过,记不清了)
赋值等式的左边不可以是可变量
$   A=AB
$  $A='abc'
$  echo $AB
显示'abc'
这是不成立的。
(楼主是不是这个意思啊?)

论坛徽章:
0
7 [报告]
发表于 2004-07-15 15:35 |只看该作者

变量里的变量赋值的问题

原来如此呀

  1. var1=AB
  2. echo $var1
  3. AB
  4. eval $var1=CD
  5. echo $var1
  6. AB
  7. echo $AB
  8. CD
复制代码

这样的话,只要重复,就就做到对变量里的变量赋值了,又学了一招。
to 想发牙的石头,的确就是你这个意思,用eval可以解决的。

论坛徽章:
0
8 [报告]
发表于 2004-07-15 17:57 |只看该作者

变量里的变量赋值的问题

原帖由 "hawkli" 发表:
这样的话,只要重复,就就做到对变量里的变量赋值了,又学了一招。
to 想发牙的石头,的确就是你这个意思,用eval可以解决的。


我是发芽不是发牙

eval 是把右边的东东当做语句执行,所以就可以咯。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-07-16 00:23 |只看该作者

变量里的变量赋值的问题

記得我在十三問裡曾提到過:
--- 變量替換完成後還會重組 command line ...

eval 的功能, 簡單來說, 就是多重替換&重組,
以上例來說明:
eval $var1=CD

首先, $var1 先替換為 AB
然後 eval 再將整行重組為: AB=CD
並交給 command line 處理.

更多 eval 例子請參考本版舊文章:
http://chinaunix.net/jh/24/15788.html

或於右上角的"搜索"框內輸入 eval 並按下GO...

论坛徽章:
0
10 [报告]
发表于 2004-07-16 00:37 |只看该作者

变量里的变量赋值的问题

原帖由 "網中人" 发表:
記得我在十三問裡曾提到過:
--- 變量替換完成後還會重組 command line ...

eval 的功能, 簡單來說, 就是多重替換&重組,
以上例來說明:
eval $var1=CD

首先, $var1 先替換為 AB
然後 eval 再將整行重組為:..........

现在理解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP