免费注册 查看新帖 |

Chinaunix

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

小弟想问个变量替换的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-23 11:38 |只看该作者 |倒序浏览
想从mysql上获取到一个变量,比如叫做ls @hdd[0], 然后在远程机器上执行。

但是@hdd[0]没有被替换成它的值,而是就是一个字符串的形式传过去的。

现在不知道怎么办了。

论坛徽章:
0
2 [报告]
发表于 2010-04-23 11:55 |只看该作者
回复 1# pirpir


不清楚你的意思, 你是想从数据库中取出一个命令,然后到远程机器上执行对吧?
你本来的命令是什么样的呢? 不知道是你描述得不够清楚还是我没看懂, 赫赫。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
3 [报告]
发表于 2010-04-23 11:59 |只看该作者
你是怎么替换的

论坛徽章:
0
4 [报告]
发表于 2010-04-23 13:12 |只看该作者
to hp_truth.别说你,我自己都没有看懂。你说的没错,我再描述一下:

是这样的,我用

我在sql服务器上存了一个指令“hdddisplay @hdd_r[0]"

想用perl把指令取过来,然后执行,之前@hdd_r有赋值,为(hdd1,hdd2,hdd3,hdd4);

在单纯的perl脚本下,@hdd_r[0]会被替换,但是从sql那边去过来的值不会被替换。

论坛徽章:
0
5 [报告]
发表于 2010-04-23 13:41 |只看该作者
@hdd_r[0] 改成$hdd_r[0]

论坛徽章:
0
6 [报告]
发表于 2010-04-23 13:49 |只看该作者
回复 5# hu145165


恩,改了。还是没有用。

说说我是怎么用的,执行代码通过sql存在@array_ref,然后把它们一条一条分在@telcmd中,此时$telcmd[0]就是“hdddisplay $hdd_r[0]
”,最后扔到telnet上去执行。
  1. while (@array_ref = $sth->fetchrow_array())
  2. {
  3. #print $array_ref[1];
  4. @telcmd = split /;/ ,$array_ref[4];
  5. #foreach $telcmd (@telcmd)
  6. #{
  7. print "$telcmd[0]\n";
  8. @la = $t->cmd($telcmd[0]);
  9. ##@la = $t->cmd("hdddisplay @hdd_r[0]");
  10. ##print "$telcmd\n";
  11. print "@la\n";
  12. #}
复制代码

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
7 [报告]
发表于 2010-04-23 13:58 |只看该作者
执行前加个my $cmd = eval($telcmd[0]);

$telcmd[0] = 'hdddisplay $hdd_r[0]'是不能执行的

论坛徽章:
0
8 [报告]
发表于 2010-04-23 14:02 |只看该作者
本帖最后由 hu145165 于 2010-04-23 14:04 编辑

你最好dump一下@telcmd里面的东西,看看你的东西是否得到。

  1. use Data::Dump qq/dump/;
  2. dump \@telcmd;
复制代码
看看打印出来的结构是什么样的。。
都不知道你split 有没有成功

论坛徽章:
0
9 [报告]
发表于 2010-04-23 14:06 |只看该作者
回复 7# yybmsrs


    何必eval 他用的是双引号,应该没有问题的。要么就定义一个中间变量 要么就用.运算符把变量连接起来

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
10 [报告]
发表于 2010-04-23 14:11 |只看该作者
回复 9# hu145165


    'hdddisplay $hdd_r[0]'数组里面的值是这样,双引号是他自己加的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP