欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1.Exec方法:

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

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

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

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

2.System方法

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

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

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

3.反引號(hào)(Backticks,Esc鍵下面那個(gè)鍵)

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

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

這種方法是最普遍的用法了。它也是運(yùn)行在一個(gè)子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來(lái)編寫(xiě)訪問(wèn)Twitter的命令行應(yīng)用程序的教程

    使用Ruby來(lái)編寫(xiě)訪問(wèn)Twitter的命令行應(yīng)用程序的教程

    這篇文章主要介紹了使用Ruby來(lái)編寫(xiě)訪問(wèn)Twitter的命令行應(yīng)用程序的教程,文章來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • 幾個(gè)加速Ruby on Rails的編程技巧

    幾個(gè)加速Ruby on Rails的編程技巧

    這篇文章主要介紹了幾個(gè)加速Ruby on Rails的編程技巧,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Ruby self在不同環(huán)境的含義

    Ruby self在不同環(huán)境的含義

    Ruby的self在不同的環(huán)境中有不同的含義,這點(diǎn)和java的this不同,原因是java實(shí)際上只有一種環(huán)境--在class的實(shí)例方法定義中使用,代表訪問(wèn)這個(gè)方法參數(shù)自動(dòng)傳進(jìn)的那個(gè)對(duì)象。
    2008-12-12
  • 冒泡排序算法及Ruby版的簡(jiǎn)單實(shí)現(xiàn)

    冒泡排序算法及Ruby版的簡(jiǎn)單實(shí)現(xiàn)

    冒泡排序?yàn)樽罨镜呐判蛩惴ㄖ?其時(shí)間復(fù)雜度為O(n^2),這里我們就來(lái)簡(jiǎn)單看一下冒泡排序算法及Ruby版的簡(jiǎn)單實(shí)現(xiàn),首先還是先來(lái)了解算法原理:
    2016-05-05
  • ruby on rails 代碼技巧

    ruby on rails 代碼技巧

    對(duì)于rails的一些使用技巧的代碼
    2009-01-01
  • Ruby基礎(chǔ)知識(shí)之方法、代碼段

    Ruby基礎(chǔ)知識(shí)之方法、代碼段

    這篇文章主要介紹了Ruby基礎(chǔ)知識(shí)之方法、代碼段,本文講解了定義方法、取消方法、方法參數(shù)、代碼塊和閉包等知識(shí),需要的朋友可以參考下
    2015-04-04
  • Ruby中區(qū)分運(yùn)行來(lái)源的方法

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

    這篇文章主要介紹了Ruby中區(qū)分運(yùn)行來(lái)源的方法,本文講解的是類似Python中的if __name__ == '__main__':效果,其實(shí)Ruby中也有類似語(yǔ)法,需要的朋友可以參考下
    2015-01-01
  • Ruby中使用設(shè)計(jì)模式中的簡(jiǎn)單工廠模式和工廠方法模式

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

    這篇文章主要介紹了Ruby中使用設(shè)計(jì)模式中的簡(jiǎn)單工廠模式和工廠方法模式的示例,這兩種模式經(jīng)常被用于Ruby on Rails開(kāi)發(fā)的結(jié)構(gòu)設(shè)計(jì)中,需要的朋友可以參考下
    2016-03-03
  • 在Docker中自動(dòng)化部署Ruby on Rails的教程

    在Docker中自動(dòng)化部署Ruby on Rails的教程

    這篇文章主要介紹了在Docker中部署Ruby on Rails的教程,Docker是當(dāng)下最火的虛擬機(jī),而本文所介紹的Ruby on Rails的部署則充分利用了Ruby中的rake這一炫酷的實(shí)現(xiàn)自動(dòng)化的方法,需要的朋友可以參考下
    2015-06-06
  • 用Ruby進(jìn)行CGI編程的入門指引

    用Ruby進(jìn)行CGI編程的入門指引

    這篇文章主要介紹了用Ruby進(jìn)行CGI編程的入門指引,編寫(xiě)CGI腳本也是Ruby用于網(wǎng)絡(luò)編程的一項(xiàng)基礎(chǔ)功能,需要的朋友可以參考下
    2015-05-05

最新評(píng)論