我有一個Perl腳本,需要調用IBM db2來處理一些命令。麻煩的是DB2連接在每次調用重挫在Perl腳本中維護外部shell環境
這不起作用:
$> db2 connect to foo
$> perl -e 'print `db2 list tables for schema bar|some_filter`;'
也沒有這樣的:
$> perl -e 'print `db2 connect to foo`; print `db2 list tables for schema bar|some_filter`;'
也沒有這樣的:
$> perl -e 'print `db2 connect to foo && db2 list tables for schema bar|some_filter`;'
在每種情況下,連接在第二個命令執行時都會丟失。
這工作:
#!/usr/bin/perl
print `db2 connect to foo`;
print `db2 list tables for schema bar`;
但這並不:
#!/usr/bin/perl
print `db2 connect to foo`;
print `db2 "select count * from bar"`;
一種解決方法將產生從Perl中的bash腳本並執行,但它會更好做直。有沒有辦法?
在上例中,這兩個命令在同一個子shell中運行,並且必須具有相同的環境。 'db2'是別名,而不是可執行程序的名稱? – mob
你的第二個例子爲我工作。我在Linux和AIX下試過了。但是,我已經加載了安裝在我的系統上的db2profile shell腳本。你做到了嗎? –
我將管道排除在'some_filter'上,這會破壞它。編輯。 – spraff