【问题标题】:How to return a value from a shell script in a perl script如何从 perl 脚本中的 shell 脚本返回值
【发布时间】:2013-06-19 18:05:18
【问题描述】:

我有一个 perl 脚本,它需要一个来自 shell 脚本的值。

以下是shell脚本(a.sh):

#!/bin/bash
return_value(){
$value =$(///some unix command)
return $value
}

以下是 perl 脚本: ///

my $answer= `sh  a.sh`;
print("the answer is $answer");  

但它不起作用。请帮帮我

【问题讨论】:

    标签: perl shell unix


    【解决方案1】:
    #!/bin/bash
    return_value(){
      value=$(///some unix command)
      echo "$value"
    }
    
    return_value
    
    1. 在 shell 变量赋值中,= 周围不能有任何空格。
    2. 不要将$ 放在作为赋值目标的变量名之前。
    3. Perl 的反引号捕获命令的标准输出,因此您必须回显该值(return 设置函数的退出状态,它不会产生输出)。
    4. 您必须执行该函数。
    5. 您应该将$value 放在引号中,以防它包含空格或文件名通配符。

    【讨论】:

      【解决方案2】:

      随便写

      echo $value
      

      在您的 bash 代码中,输出将显示为 Perl 代码中反引号的结果。

      【讨论】:

        【解决方案3】:

        Backqoutes 替换标准输出,而不是返回值(它只是一个整数)。如果你用过

        echo $value
        

        而不是return $value,它将按您的预期工作。还是会更简单

        some unix command
        

        作为 bash 脚本中的单行。

        【讨论】:

          猜你喜欢
          • 2013-07-16
          • 2016-03-14
          • 1970-01-01
          • 2020-04-30
          • 1970-01-01
          • 2011-02-17
          • 1970-01-01
          • 2014-05-25
          • 2011-11-26
          相关资源
          最近更新 更多