如何从perl脚本中的shell脚本返回值

时间:2013-06-19 18:05:18

标签: perl shell unix

我有一个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");  

但它不起作用。请帮帮我

3 个答案:

答案 0 :(得分:3)

只需写下

echo $value
在您的bash代码中

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

答案 1 :(得分:3)

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

return_value
  1. 在shell变量赋值中,=周围不能有任何空格。
  2. 不要将$放在作为作业目标的变量名称之前。
  3. Perl的反引号捕获命令的标准输出,因此您必须回显该值(return设置函数的退出状态,它不会产生输出。)
  4. 您必须执行该功能。
  5. 如果它包含空格或文件名通配符,则应将$value放在引号中。

答案 2 :(得分:1)

Backqoutes替换stdout,而不是返回值(只是一个整数)。如果您使用

echo $value

而不是return $value它会像您期望的那样工作。更简单仍然是

some unix command

作为bash脚本中的单行。