最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby中調(diào)用執(zhí)行shell命令的6種方法

 更新時間:2014年10月11日 13:30:23   作者:瓊樓玉宇  
這篇文章主要介紹了Ruby中調(diào)用執(zhí)行shell命令的6種方法,本文羅列了Ruby中可以調(diào)用和執(zhí)行Linux系統(tǒng)Shell命令的6個方法,需要的朋友可以參考下

碰到需要調(diào)用操作系統(tǒng)shell命令的時候,Ruby為我們提供了六種完成任務(wù)的方法:

1.Exec方法:

Kernel#exec方法通過調(diào)用指定的命令取代當(dāng)前進(jìn)程例子:

復(fù)制代碼 代碼如下:

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

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

2.System方法

Kernel#system方法操作命令同上, 但是它是運(yùn)行一個子shell來避免覆蓋當(dāng)前進(jìn)程。如果命令執(zhí)行成功則返回true,否則返回false。

復(fù)制代碼 代碼如下:

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

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

復(fù)制代碼 代碼如下:

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

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

4.IO#popen

復(fù)制代碼 代碼如下:

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

5.open3#popen3

復(fù)制代碼 代碼如下:

$ 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

復(fù)制代碼 代碼如下:

$ 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

相關(guān)文章

  • Ruby中使用設(shè)計(jì)模式中的簡單工廠模式和工廠方法模式

    Ruby中使用設(shè)計(jì)模式中的簡單工廠模式和工廠方法模式

    這篇文章主要介紹了Ruby中使用設(shè)計(jì)模式中的簡單工廠模式和工廠方法模式的示例,這兩種模式經(jīng)常被用于Ruby on Rails開發(fā)的結(jié)構(gòu)設(shè)計(jì)中,需要的朋友可以參考下
    2016-03-03
  • Ruby中區(qū)分運(yùn)行來源的方法

    Ruby中區(qū)分運(yùn)行來源的方法

    這篇文章主要介紹了Ruby中區(qū)分運(yùn)行來源的方法,本文講解的是類似Python中的if __name__ == '__main__':效果,其實(shí)Ruby中也有類似語法,需要的朋友可以參考下
    2015-01-01
  • Ruby 多線程的潛力和弱點(diǎn)分析

    Ruby 多線程的潛力和弱點(diǎn)分析

    這篇文章主要介紹了Ruby 多線程的潛力和弱點(diǎn)分析,本文講解了Ruby 多線程和 IO Block、Ruby GIL 的影響、JRuby 去除了 GIL、Ruby 多線程總結(jié)等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 在Docker中自動化部署Ruby on Rails的教程

    在Docker中自動化部署Ruby on Rails的教程

    這篇文章主要介紹了在Docker中部署Ruby on Rails的教程,Docker是當(dāng)下最火的虛擬機(jī),而本文所介紹的Ruby on Rails的部署則充分利用了Ruby中的rake這一炫酷的實(shí)現(xiàn)自動化的方法,需要的朋友可以參考下
    2015-06-06
  • Jekyll靜態(tài)網(wǎng)站后臺引擎使用教程

    Jekyll靜態(tài)網(wǎng)站后臺引擎使用教程

    今天,我就來示范如何在github上搭建Blog,你可以從中掌握github的Pages功能,以及Jekyll軟件的基本用法。更重要的是,你會體會到一種建立網(wǎng)站的全新思路。
    2016-04-04
  • Ruby 取得指定月日期數(shù)的方法

    Ruby 取得指定月日期數(shù)的方法

    取得指定月日期數(shù)的Ruby代碼
    2009-05-05
  • 解讀Ruby中注釋的使用方法

    解讀Ruby中注釋的使用方法

    這篇文章主要介紹了解讀Ruby中注釋的使用方法,注釋的用法是每門編程語言中最基本的知識點(diǎn)之一,需要的朋友可以參考下
    2015-05-05
  • 深入理解Ruby on Rails中的緩存機(jī)制

    深入理解Ruby on Rails中的緩存機(jī)制

    這篇文章主要介紹了深入理解Ruby on Rails中的緩存機(jī)制,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • RUBY 新手教程 跟我一起學(xué)ruby

    RUBY 新手教程 跟我一起學(xué)ruby

    從今天起我就要開始學(xué)Ruby了。怎么樣,沒見吧?一個新人寫教程。就憑我堅(jiān)強(qiáng)的毅力,科學(xué)的自學(xué)方法,以及我的鉆研精神,我有信心學(xué)通Ruby,而同樣是新手的你也可以!
    2011-01-01
  • 簡單的Ruby中的Socket編程教程

    簡單的Ruby中的Socket編程教程

    這篇文章主要介紹了簡單的Ruby中的Socket編程教程,是為Ruby on Rails學(xué)習(xí)過程當(dāng)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04

最新評論

晴隆县| 安庆市| 明光市| 白银市| 睢宁县| 青阳县| 周口市| 响水县| 武川县| 五台县| 威宁| 兴业县| 兴安盟| 常宁市| 海宁市| 武威市| 平陆县| 营山县| 通化县| 乳源| 余江县| 原平市| 兴安县| 平安县| 汤阴县| 永登县| 湖口县| 巢湖市| 珲春市| 商都县| 瑞安市| 阿图什市| 阳城县| 乌拉特后旗| 米脂县| 万源市| 涪陵区| 叶城县| 太原市| 教育| 樟树市|