ruby呼叫linux的shell方法

2021-09-06 18:05:37 字數 1542 閱讀 2351

碰到需要呼叫作業系統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" 

>> $?

=> #

>> $?.to_i

=> 0

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

4.io#popen

$ irb

>> io.popen("date")

mon mar 12 18:58:56 pdt 2007

=> nil

5.open3#popen3

$ irb

>> stdin, stdout, stderr = open3.popen3('dc') 

=> [#, #, #]

>> 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, #, #, #]

>> $?

=> nil

>> pid

=> 26327

>> ignored, status = process::waitpid2 pid

=> [26327, #]

>> status.to_i

=> 256

本文出自 「悟道集」 部落格,請務必保留此出處

linux系統下重啟tomcat的shell指令碼

1.新建乙個 restart.sh檔案 可以放到任意目錄,我這裡放在tomcat bin目錄下 vi opt apache tomcat 6.0.32 bin restart.sh2.複製如下內容 孖仔幫 bin sh tomcat home opt apache tomcat 6.0.32 孖仔幫...

linux系統下重啟tomcat的shell指令碼

linux系統下重啟tomcat的shell指令碼 bin sh tomcat home opt apache tomcat 6.0.32 找到tomcat程序的id並kill掉 ps ef grep tomcat awk sed e s kill 9 g sh 刪除日誌檔案,如果你不先刪除可以不要...

linux系統下重啟tomcat的shell指令碼

linux系統下重啟tomcat的shell指令碼 bin sh tomcat home opt apache tomcat 6.0.32 找到tomcat程序的id並kill掉 ps ef grep tomcat awk sed e s kill 9 g sh 刪除日誌檔案,如果你不先刪除可以不要...