实践是检验真理的惟一标准,下面用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对象),命令执行失败程序会报错。
若是分析有误,但愿高手指摘。