【发布时间】:2011-04-16 03:03:30
【问题描述】:
如果值 = 0,我如何从 bash 脚本执行 perl 脚本获取输出并退出? 同样在 perl 脚本中,我如何返回值,是直接返回还是打印出来?
【问题讨论】:
如果值 = 0,我如何从 bash 脚本执行 perl 脚本获取输出并退出? 同样在 perl 脚本中,我如何返回值,是直接返回还是打印出来?
【问题讨论】:
如果要继续运行,返回值在$?
请注意,perl 脚本返回的值和脚本的输出是有区别的。要获取脚本的输出,请使用 $() 运算符:
#!/bin/bash 输出=$(perl 脚本参数) echo perl 脚本返回 $? echo 脚本的输出是 $output【讨论】:
要获取返回码,请使用exit 函数。示例:
Perl 脚本:
if ($success) {
$return_value = 0;
} else {
$return_value = 1;
}
exit($return_value);
Bash 脚本:
perl scriptname args > outfile && exit
假设您想在 Perl 脚本的返回值为 0 时退出,并且您希望将 Perl 脚本的输出保存在outfile 中。如果返回值不为零,则存储在$?,如果您愿意,可以将该值保存到变量中。
【讨论】:
exit 函数从脚本返回一个值。您可以将任何您喜欢的数字绑定到$return_value,就像您通常在 Perl 中所做的那样。为了澄清,我在 perl 示例中添加了一些内容。
你的 perl 脚本:foo.pl
#!/usr/bin/perl
# do something and then
exit 1;
在你的 bash 脚本 foo.sh 中:
#!/bin/bash
# do something and then call perl script
perl foo.pl
# check return value using $?
echo "perl script returned $?"
【讨论】:
exit 1 需要一个分号。
; 和正确1 绝对不意味着成功的价值,这只是一个例子。