일부 명령을 처리하기 위해 IBM db2를 호출해야하는 Perl 스크립트가 있습니다. 문제는 DB2 연결이 작동하지 않는Perl 스크립트 내에서 외부 쉘 환경 유지
각 호출에 사방되는 것을 :
$> 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"`;
해결 방법은 펄에서 떠들썩한 파티 스크립트를 생성하고 실행하는 것입니다,하지만 그것을 할 더 좋은 것 직접. 방법이 있습니까?
마지막 예제에서 두 명령은 동일한 서브 쉘에서 실행되며 동일한 환경을 가져야합니다. 'db2'는 실행 가능한 프로그램의 이름 대신에 별명입니까? – mob
두 번째 예제가 나를 위해 일했습니다. 나는 리눅스와 AIX에서 그것을 시도했다. 그러나 시스템에 설치된 db2profile 쉘 스크립트를로드했습니다. 그거 했니? –
파이프를'some_filter'에 놓았습니다. 파이프가 깨졌습니다. 편집 됨. – spraff