濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Ruby中調(diào)用執(zhí)行shell命令的6種方法

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

熱門標(biāo)簽:漯河電銷 征服者企業(yè)地圖標(biāo)注 柯城手機(jī)地圖如何做地圖標(biāo)注 外呼線路從哪里出來(lái)的 巫師3地圖標(biāo)注魔力之所 天津外呼系統(tǒng)怎么收費(fèi) 淮安自動(dòng)外呼系統(tǒng)供應(yīng)商 中牟外呼系統(tǒng)違法嗎 AI電銷機(jī)器人 線路

碰到需要調(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

您可能感興趣的文章:
  • Ruby中case表達(dá)式詳解
  • Ruby面向?qū)ο缶幊淘斀?/li>
  • 優(yōu)化Ruby代碼使程序運(yùn)行速度提高的例子

標(biāo)簽:甘孜 河池 大慶 棗莊 克拉瑪依 內(nèi)江 南昌 西雙版納

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby中調(diào)用執(zhí)行shell命令的6種方法》,本文關(guān)鍵詞  Ruby,中,調(diào)用,執(zhí)行,shell,命令,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby中調(diào)用執(zhí)行shell命令的6種方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Ruby中調(diào)用執(zhí)行shell命令的6種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    诸暨市| 鹤峰县| 武宁县| 乡城县| 彝良县| 庄河市| 梅河口市| 邢台市| 丽江市| 大邑县| 马鞍山市| 讷河市| 邹平县| 大同市| 石渠县| 乐亭县| 炎陵县| 平利县| 安吉县| 洞口县| 布拖县| 永寿县| 衢州市| 乌恰县| 淳安县| 晋州市| 衡南县| 隆回县| 个旧市| 延安市| 班戈县| 长寿区| 桐乡市| 怀安县| 越西县| 阳东县| 法库县| 沈丘县| 青河县| 德惠市| 梓潼县|