从perl返回一个字符串到bash

时间:2017-09-27 06:04:35

标签: bash perl

我试图将一个字符串返回到我的shell脚本,然后我得到了错误:
 Can't return outside a subroutine at ...

$result = "Error: $ARGV[0] changed!"
return ($result);

关于如何将它传递回我的shell的任何想法?

1 个答案:

答案 0 :(得分:1)

Bash没有返回值的概念。代替:

  • 命令具有退出值,表示成功/失败。退出代码零成功。如果脚本不是die(),则Perl会自动退出。

  • 命令可以写入文件描述符,例如标准输出。 Bash可以重定向和捕获此输出。

因此,如果程序(用Perl或其他方式编写)希望将数据提供给Bash,它应该打印数据。

E.g。如果我们想要在stdout上捕获命令的所有输出:

result="$(yourcommand arg1 arg2)"

通常,输出通过管道输出到另一个命令:

yourcommand arg1 arg2 | grep Error  # all lines including "Error"

或写入文件:

yourcommand arg1 arg2 >file.txt