我有一个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