- 论坛徽章:
- 0
|
本帖最后由 ghostsaint 于 2010-03-01 17:33 编辑
Hi 大家好.
需哦现在使用backtick ` 来执行带参数的外部sh文件
calldb.sh- #!/bin/sh
- sqlplus $1/$2<<END
- execute $3('$4');
- Commit;
- exit;
- END
- exit 0
复制代码 在shell中手动加参数运行, 一切正常;
但是通过cron, 先运行一个sh, cd到perl程序的目录, 然后执行perl程序:- my $call = "./calldb.sh $dbUser $dbPwd $dbSpName ";
- if ($fileName =~ m/PART/i) {
- $call .= "P";
- } elsif ($fileName =~ m/ASSET/i) {
- $call .= "A";
- }
- undef $!;$result = `$call`;
- appLog("DB call returned: $result");
- if ($?) {
- confess("DB Call Error Code: $?, Output: $result");
- }
复制代码 就会出现错误, 并且$result为空:
DB Call Error Code: -1, Output: at app.pl line 435....
怎样才能保证出错的情况下, 能够同时获得sh的已有输出(到perl变量$result以供分析)及有价值的错误原因? 谢谢 |
|