| 序号 |
评论者 |
共有评论 11 【论坛浏览】 【发表评论】 |
评论时间 |
|
| 1 |
hasjing |
回复 #1 howardling 的帖子 $CCM_ADDR=`ccm start.......`; |
2007/5/25 00:22 |
|
| 2 |
howardling |
| 引用: | 原帖由 hasjing 于 2007-5-25 00:22 发表
$CCM_ADDR=`ccm start.......`; |
|
测试环境
active perl 5.8.8 build 820 ,winxp sp2 ,简体中文
结果用语句$CCM_ADDR=`ccm start.......`不行,直接返回的就是ccm start的命令行语句,并不返回session 地址值
我不知道我哪里没设置好,执行pl的机器我已经加入bin目录到环境变量了,这个应该不是问题
如果用system("ccm start......."),能获得ADDR的正确地址输出,但就是不能赋值给环境变量$CCM_ADDR,困惑ing!
Thanks hasjing!
: 4::
[ 本帖最后由 howardling 于 2007-5-27 02:08 编辑 ] |
2007/5/25 11:36 |
|
| 3 |
i子休 |
Q1
system返回的是ccm start的退出状态,0代表成功
如果需要返回ccm start的输出信息,可以用qx或者``
Q2
没错 |
2007/5/25 13:36 |
|
| 4 |
hasjing |
回复 #3 howardling 的帖子 用 `ccm start ... ` 可以得到 ccm start 命令通过 stdout 返回的输出信息,
如果要获得环境变量 CCM_ADDR 的值,可用用 $ENV("CCM_ADDR") 获得,
设置CCM_ADDR 的值可以用跟你的 Q2 一样! |
2007/5/25 15:24 |
|
| 5 |
howardling |
在子休的提示下,我用qx(ccm start........)获得了CCM_ADDR的值,
现在奇怪的是为什么在win平台下'ccm start'无法执行呢?
用符号' '包括的内容在win下只能是普通字符串吧。
比如说,print 'ccm start...........',是无法执行里面的命令的,会直接打印出单引号里面的内容。
非常感谢子休和hasjing的跟帖! |
2007/5/27 02:11 |
|
| 6 |
howardling |
应该说,这不是环境变量的问题了
而是如何获得session 地址的问题了! |
2007/5/27 02:18 |
|
| 7 |
hasjing |
回复 #7 howardling 的帖子 我想确认一下,你是否是希望在Perl里面Start一个CM的Session,然后
在执行一些自动化的事情?
如果是这样,需要考虑如下问题:
通过Perl system 或者 `` 执行的操作系统命令,
会首先加载一个 sh 进程(在Windows下是cmd)然后通过这个进程执行你的命令,
所以当 system里面的命令执行完后,sh 进程会被释放,sh 进程加载的session可能也被释放了;
所以建议你能先 用 命令行下面 start 起来一个 ccm 的session后,再执行perl的批处理;
关于如何能够再Perl里面执行加载 ccm start,等我有时间时,会试验研究一下; |
2007/5/27 17:46 |
|
| 8 |
howardling |
回复 #8 hasjing 的帖子 是的,
希望在Perl里面Start一个CM的Session,然后在执行一些自动化的事情;
window下,我的测试结果是:执行system(ccm stop)之前是不会释放cm session的. |
2007/5/27 23:25 |
|
| 9 |
i子休 |
| 引用: | 原帖由 howardling 于 2007-5-27 02:11 发表
现在奇怪的是为什么在win平台下'ccm start'无法执行呢?
用符号' '包括的内容在win下只能是普通字符串吧。
比如说,print 'ccm start...........',是无法执行里面的命令的,会直接打印出单引号里面的内容。 |
|
执行系统命令的是反引号:`command`
构造字符串的是单引号:'string' |
2007/5/28 09:44 |
|
| 10 |
i子休 |
| 引用: | 原帖由 hasjing 于 2007-5-27 17:46 发表
通过Perl system 或者 `` 执行的操作系统命令,
会首先加载一个 sh 进程(在Windows下是cmd)然后通过这个进程执行你的命令 |
|
如果传给system、exec多个参数,例如system "ccm", "start",是不会有新的shell产生的
在只有一个参数的情况下,是否会fork出一个shell来执行命令,取决于命令字符串中是否有shell的元字符
比如楼主的system("ccm start"),也是不会fork出一个shell的,所以在调用ccm stop之前,session会一直有效 |
2007/5/28 10:25 |
共有评论数 11 每页显示 10
|