我试图将一个字符串返回到我的shell脚本,然后我得到了错误:
Can't return outside a subroutine at ...
$result = "Error: $ARGV[0] changed!"
return ($result);
关于如何将它传递回我的shell的任何想法?
答案 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