• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ruby中exec,system,%x的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

实践是检验真理的唯一标准,下面用win7做个实验

1.exec命令

代码:

1 cmd = exec("echo \'hello\'")
2 puts \'-\' * 20
3 p cmd

结果:

分析:

exec执行完程序就不继续往下执行了,而且会把执行结果打印出来,可能执行exec完程序就退出了。

再执行一个错误的命令测试

代码:

1 cmd = exec("echoo \'hello\'")
2 puts \'-\' * 20
3 p cmd

结果:

分析:

把执行结果打印出来,程序报错。

2.system命令

代码:

1 cmd = system "echo \'hello\'"
2 puts \'-\' * 20
3 p cmd

结果:

分析:

和exec一样,把命令执行结果打印出来,和exec不同的是,执行完后不会退出程序,返回TrueClass对象,然后会继续执行下面的代码。

再执行一个错误的命令测试

代码:

1 cmd = system "echoo \'hello\'"
2 puts \'-\' * 20
3 p cmd

结果:

分析:

执行错误命令不会报错,返回NilClass对象,然后继续执行后面代码。

3.%x{}

代码:

1 cmd = %x{echo \'hello\'}
2 puts \'-\' * 20
3 p cmd

结果:

分析:

不会打印执行结果,返回值是String对象,返回的结果是命令执行的结果,会继续执行后面的代码。

再执行一个错误的命令测试

代码:

1 cmd = %x{echoo \'hello\'}
2 puts \'-\' * 20
3 p cmd

结果:

分析:执行错误的命令或导致程序报错。

4.采用``

1 cmd = `echo \'hello\'`
2 puts \'-\' * 20
3 p cmd

成功和失败的执行结果和%x{}一样,应该是%x{}的简写。

总结:

用exec可以执行终端命令,命令会被执行,命令执行成功后面的代码就不再继续执行了,命令执行失败,程序会报错。

用system执行终端命令,命令会被执行,命令执行成功返回true,命令执行失败返回nil,代码会继续往下执行。

用%x{}执行终端命令,命令会被执行,命令执行成功返回执行结果(String对象),命令执行失败程序会报错。

如果分析有误,希望高手指摘。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
一步一步学Ruby(十四): self和作用域发布时间:2022-07-14
下一篇:
BestofRubyQuiz-GEDCOMParser发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap