zoukankan      html  css  js  c++  java
  • ruby中exec,system,%x的区别

    实践是检验真理的唯一标准,下面用win7做个实验

    1.exec命令

    代码:

    1 cmd = exec("echo 'hello'")
    2 puts '-' * 20
    3 p cmd

    结果:

    分析:

    exec执行完程序就不继续往下执行了,而且会把执行结果打印出来,可能执行exec完程序就退出了。

    再执行一个错误的命令测试

    代码:

    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对象),命令执行失败程序会报错。

    如果分析有误,希望高手指摘。

    你给了我眼睛,却不给我光明。
  • 相关阅读:
    SpringBoot整合NoSql--(四)Session共享
    SpringBoot整合NoSql--(三)Redis集群
    SpringBoot整合NoSql--(二)MongoDB
    SpringBoot整合NoSql--(一)Redis
    SpringBoot整合持久层技术--(三)Spring Data JPA
    ArcGIS Server 10.4切片图的制作与发布
    ArcGIS api for JavaScript 3.27 聚合(cluster)
    ArcGIS api for JavaScript 3.27 按需显示需要的图层
    ArcGIS api for JavaScript 3.27 在线浏览的一些小部件
    WebGIS小理论(持续更新)
  • 原文地址:https://www.cnblogs.com/wwb0111/p/3246221.html
Copyright © 2011-2022 走看看