實踐是檢驗真理的惟一標準,下面用win7作個實驗測試
1.exec命令spa
代碼:3d
1 cmd = exec("echo 'hello'") 2 puts '-' * 20 3 p cmd
結果:code
分析:對象
exec執行完程序就不繼續往下執行了,並且會把執行結果打印出來,可能執行exec完程序就退出了。blog
再執行一個錯誤的命令測試cmd
代碼:class
1 cmd = exec("echoo 'hello'") 2 puts '-' * 20 3 p cmd
結果:終端
分析:程序
把執行結果打印出來,程序報錯。
2.system命令
代碼:
1 cmd = system "echo 'hello'" 2 puts '-' * 20 3 p cmd
結果:
分析:
和exec同樣,把命令執行結果打印出來,和exec不一樣的是,執行完後不會退出程序,返回TrueClass對象,而後會繼續執行下面的代碼。
再執行一個錯誤的命令測試
代碼:
1 cmd = system "echoo 'hello'" 2 puts '-' * 20 3 p cmd
結果:
分析:
執行錯誤命令不會報錯,返回NilClass對象,而後繼續執行後面代碼。
3.%x{}
代碼:
1 cmd = %x{echo 'hello'} 2 puts '-' * 20 3 p cmd
結果:
分析:
不會打印執行結果,返回值是String對象,返回的結果是命令執行的結果,會繼續執行後面的代碼。
再執行一個錯誤的命令測試
代碼:
1 cmd = %x{echoo 'hello'} 2 puts '-' * 20 3 p cmd
結果:
分析:執行錯誤的命令或致使程序報錯。
4.採用``
1 cmd = `echo 'hello'` 2 puts '-' * 20 3 p cmd
成功和失敗的執行結果和%x{}同樣,應該是%x{}的簡寫。
總結:
用exec能夠執行終端命令,命令會被執行,命令執行成功後面的代碼就再也不繼續執行了,命令執行失敗,程序會報錯。
用system執行終端命令,命令會被執行,命令執行成功返回true,命令執行失敗返回nil,代碼會繼續往下執行。
用%x{}執行終端命令,命令會被執行,命令執行成功返回執行結果(String對象),命令執行失敗程序會報錯。
若是分析有誤,但願高手指摘。