国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

如何在Ruby中調用執行shell命令

2020-02-24 15:36:30
字體:
來源:轉載
供稿:網友

在有需求的時候我們經常會在Ruby中執行Shell命令,那么你知道如何在Ruby中調用執行shell命令,下面我們就一起去看看關于Ruby中調用執行shell命令的6種方法吧。

1.Exec方法:

Kernel#exec方法通過調用指定的命令取代當前進程例子:

?

復制代碼 代碼如下:

????? $ irb
????? >> exec 'echo "hello $HOSTNAME"'
???????? hello nate.local
????? $

?

值得注意的是,exec方法用echo命令來取代了irb進程從而退出了irb。主要的缺點是,你無法從你的ruby腳本里知道這個命令是成功還是失敗。

2.System方法

Kernel#system方法操作命令同上, 但是它是運行一個子shell來避免覆蓋當前進程。如果命令執行成功則返回true,否則返回false。

復制代碼 代碼如下:

?$ irb????????????
? >> system 'echo "hello $HOSTNAME"'
? hello nate.local
? => true
? >> system 'false'
? => false
? >> puts $?
? 256
? => nil
? >>

?

3.反引號(Backticks,Esc鍵下面那個鍵)

?

復制代碼 代碼如下:

$ irb
? >> today = `date`
? => "Mon Mar 12 18:15:35 PDT 2007n"
? >> $?
? => #<Process::Status: pid=25827,exited(0)>
? >> $?.to_i
? => 0


這種方法是最普遍的用法了。它也是運行在一個子shell中。

?

4.IO#popen

?

復制代碼 代碼如下:

? $ irb
? >> IO.popen("date") { |f| puts f.gets }
? Mon Mar 12 18:58:56 PDT 2007
? => nil

?

5.open3#popen3

?

復制代碼 代碼如下:

$ irb
? >> stdin, stdout, stderr = Open3.popen3('dc')
? => [#<IO:0x6e5474>, #<IO:0x6e5438>, #<IO:0x6e53d4>]
? >> stdin.puts(5)
? => nil
? >> stdin.puts(10)
? => nil
? >> stdin.puts("+")
? => nil
? >> stdin.puts("p")
? => nil
? >> stdout.gets
? => "15n"

?

6.Open4#popen4

?

復制代碼 代碼如下:

$ irb
? >> require "open4"
? => true
? >> pid, stdin, stdout, stderr = Open4::popen4 "false"
? => [26327, #<IO:0x6dff24>, #<IO:0x6dfee8>, #<IO:0x6dfe84>]
? >> $?
? => nil
? >> pid
? => 26327
? >> ignored, status = Process::waitpid2 pid
? => [26327, #<Process::Status: pid=26327,exited(1)>]
? >> status.to_i
? => 256

這篇文章主要介紹了如何在Ruby中調用執行shell命令的內容,小編列出了Ruby中可以調用和執行Linux系統Shell命令的6個方法,希望能給大家帶來幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 岳普湖县| 老河口市| 盐源县| 敖汉旗| 鸡西市| 松原市| 夏邑县| 电白县| 祁东县| 恩平市| 文登市| 荆州市| 阳泉市| 大冶市| 方正县| 阳谷县| 通榆县| 依兰县| 中阳县| 白水县| 静安区| 积石山| 江安县| 静海县| 澄迈县| 岳普湖县| 始兴县| 平山县| 宁波市| 库尔勒市| 涞水县| 武义县| 广丰县| 开化县| 巴塘县| 壤塘县| 罗定市| 孟津县| 双鸭山市| 汉阴县| 马边|