亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2818 | 回復(fù): 7
打印 上一主題 下一主題

怎樣執(zhí)行外部程序并獲得其輸出, 如果出問題的話也能捕獲輸出及錯(cuò)誤? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-03-01 17:25 |只看該作者 |倒序?yàn)g覽
本帖最后由 ghostsaint 于 2010-03-01 17:33 編輯

Hi 大家好.

需哦現(xiàn)在使用backtick ` 來執(zhí)行帶參數(shù)的外部sh文件
calldb.sh
  1. #!/bin/sh

  2. sqlplus $1/$2<<END
  3. execute $3('$4');
  4. Commit;
  5. exit;
  6. END

  7. exit 0
復(fù)制代碼
在shell中手動(dòng)加參數(shù)運(yùn)行, 一切正常;

但是通過cron, 先運(yùn)行一個(gè)sh, cd到perl程序的目錄, 然后執(zhí)行perl程序:
  1. my $call = "./calldb.sh $dbUser $dbPwd $dbSpName ";
  2. if ($fileName =~ m/PART/i) {
  3.         $call .= "P";
  4. } elsif ($fileName =~ m/ASSET/i) {
  5.         $call .= "A";
  6. }
  7. undef $!;$result = `$call`;
  8. appLog("DB call returned: $result");
  9. if ($?) {
  10.         confess("DB Call Error Code: $?, Output: $result");
  11. }
復(fù)制代碼
就會(huì)出現(xiàn)錯(cuò)誤, 并且$result為空:

DB Call Error Code: -1, Output:  at app.pl line 435....


怎樣才能保證出錯(cuò)的情況下, 能夠同時(shí)獲得sh的已有輸出(到perl變量$result以供分析)及有價(jià)值的錯(cuò)誤原因? 謝謝

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-03-01 17:38 |只看該作者
打印$call看下, 是不是有特殊字符呢

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-03-01 17:57 |只看該作者

$result = `$call`;
改成
@result = `$call`;
試試

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-03-01 18:00 |只看該作者
command  2>&1

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-03-01 18:19 |只看該作者
回復(fù) 1# ghostsaint


    或者用這個(gè)看看:
    `( $cmd ) 2>$log_file`

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-03-01 19:35 |只看該作者
Can't exec "./calldb.sh": No such file or directory at app.pl line 713.

Use of uninitialized value in concatenation (.) or string at app.pl line 714.

2010-03-01 17:31:44: DB call returned:

Use of uninitialized value in concatenation (.) or string at ipos.pl line 716.

2010-03-01 17:31:44: Call import script on /export/home/oracle/APP_INPUT/DATA_PART.TXT failed, cause: DB Call Error Code: -1, Output:  at app.pl line 435


=========
line 713: undef $!;$result = `$call`;
line 714: appLog("DB call returned: $result");
line 716: confess("DB Call Error Code: $?, Output: $result");


這些問題發(fā)生在客戶環(huán)境里, 我沒法重現(xiàn)相當(dāng)郁悶.

貌似是calldb.sh的執(zhí)行權(quán)限問題, 但是客戶在shell下加參數(shù)運(yùn)行過, 運(yùn)行正常.

是否會(huì)因?yàn)橥ㄟ^cron調(diào)用產(chǎn)生的void context的問題? 但是以前類似的項(xiàng)目使用了相同的方法.


不解

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-03-02 09:03 |只看該作者
回復(fù) 6# ghostsaint


   
    應(yīng)該是CALL執(zhí)行不成功,所以$result 為空導(dǎo)致714和716報(bào)錯(cuò)

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-03-02 09:06 |只看該作者
回復(fù) 4# Perl_Er


    嘿嘿 和ER撞頭啦!
   
    那我改個(gè):open(STDERR, ">errlog.log" )
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP