a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Ruby > 正文

Ruby中調用執行shell命令的6種方法

2020-10-29 19:43:55
字體:
來源:轉載
供稿:網友

碰到需要調用操作系統shell命令的時候,Ruby為我們提供了六種完成任務的方法:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久国产精品 | 欧美中文在线观看 | 国产精品视频一区二区三区, | 国产一区二区影院 | 天堂网中文在线 | 国产综合在线视频 | 国产精品一区二区在线看 | 久久一区| 免费一级黄色电影 | 精品国产髙清在线看国产毛片 | 99精品国产在热久久 | 国产一级电影网 | 亚洲国产一区二 | 日韩欧美国产精品综合嫩v 午夜精品久久久久久久久 97色在线视频 | 亚洲一级毛片 | 久久久久中精品中文字幕19 | 日韩精品电影在线观看 | 日韩性欧美 | yy6080久久伦理一区二区 | 欧美黄色一区二区 | 免费观看av | 国产suv精品一区二区33 | 嫩草视频在线播放 | 日韩亚洲视频在线观看 | 国产美女av | 另类二区| 日韩高清国产一区在线 | 国产综合久久久久久鬼色 | 成人91免费版 | 天堂一区二区三区四区 | 超碰2019 | 午夜视频色 | 黄色免费在线观看网址 | 久久综合狠狠综合久久 | 男女羞羞羞视频午夜视频 | 在线看h| 久久99国产一区二区三区 | 视频在线观看一区 | 九九亚洲 | 国产在线一 | 伊人激情 |