0

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

但它不起作用。请帮帮我

4

3 回答 3

3

写吧

echo $value

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

于 2013-06-19T18:08:58.683 回答
3
#!/bin/bash
return_value(){
  value=$(///some unix command)
  echo "$value"
}

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

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

echo $value

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

some unix command

作为 bash 脚本中的单行。

于 2013-06-19T18:09:14.633 回答