将字符串从perl返回到bash

将字符串从perl返回到bash,bash,perl,Bash,Perl,我试图向shell脚本返回一个字符串,结果出现错误: 无法在子例程的外部返回… $result = "Error: $ARGV[0] changed!" return ($result); 有没有关于如何将其传递回shell的想法?Bash没有返回值的概念。相反: 命令有一个表示成功/失败的退出值。退出代码0表示成功。如果脚本没有死掉(),Perl将自动退出并成功 命令可以写入文件描述符,例如stdout。Bash可以重定向和捕获此输出 因此,如果一个程序(用Perl或其他语言编写)希望将

我试图向shell脚本返回一个字符串,结果出现错误:
无法在子例程的外部返回…

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

有没有关于如何将其传递回shell的想法?

Bash没有返回值的概念。相反:

  • 命令有一个表示成功/失败的退出值。退出代码0表示成功。如果脚本没有死掉(),Perl将自动退出并成功

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

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

例如,如果我们想在stdout上捕获命令的所有输出:

result="$(yourcommand arg1 arg2)"
通常,输出通过管道传输到不同的命令:

yourcommand arg1 arg2 | grep Error  # all lines including "Error"
或写入文件:

yourcommand arg1 arg2 >file.txt

您通常会使用
print”错误:$ARGV[0]已更改\n“
说“…”
。如错误消息所示,
return
用于将值从子例程返回给调用方。如何在shell脚本中捕获字符串?请参阅本地
sh
手册页中的
$(…)
``
运算符。