IBM i에서 PASE 및 Qshell의 세계로 들어가고 있으며, 여전히 문제를 해결하는 "쉘 방식"을 배우고 있습니다.PASE/Qshell에서 데이터베이스 관계를 판별하는 방}은?
주어진 실제 파일과 연관된 주어진 라이브러리의 모든 논리 파일을 삭제하는 쉘 스크립트를 작성하려고합니다. OS는 IBM i 7.2입니다. QSYS-land에서는 실제 파일에 대해 DSPDBR
을 outfile에 작성한 다음 outfile을 읽고 각 종속 파일을 삭제합니다. PASE 또는 Qshell에서이 작업을 어떻게 수행합니까? 몇 가지 아이디어가 있었지만 모두 너무 지나치게 복잡해 보였습니다. 쉘 스크립팅에 대해 배울수록 더 많은 단축키를 찾을 수있었습니다.
system "DSPDBR FILE(MYLIB/MYFILE) OUTPUT(*OUTFILE) OUTFILE(QTEMP/DSPDBR)"
db2 "select WHREFI from QTEMP/DSPDBR where WHRELI = 'MYLIB'"
(나는 QTEMP 정말 일시적으로 작동하지 않습니다 지금은 볼
:내 첫번째 생각은 기본적으로 같은 일을하고, 위의 과정을 복제하고 어떻게 든 SELECT의 출력을 사용하는 것이 었습니다 라이브러리,하지만 어쨌든이 주위에 방법이 있습니다.) 두 번째 아이디어는 DSPDBR 문의 출력을 awk와 같은 것으로 파이프 처리하고 논리 파일 이름을 선택하여 출력을 a 스트림 파일 (또는 쉘 변수?). 그리고 거기에서 어떻게 든이 목록을 사용하여 논리 파일을 삭제합니다.
더 간단한 방법이 있습니까? 답이 무엇이든간에 QSYS 명령 및 오브젝트와 상호 작용하기 위해 쉘 스크립트를 작성할 때 종종 반복되는 패턴이 될 것입니다.
QSYS2.SYSVIEWDEP에는 필자의 테스트 PF와 LF가 포함되지 않은 것 같습니다. 어쩌면 LF는 인덱스로 간주되므로 SYSVIEWDEP에 포함되지 않을 수 있습니까? – smeep
내가 찾는 것이 QSYS 명령/프로그램과 상호 작용할 필요가있는 쉘 스크립트를 작성할 때 사람들이 사용하는 일반적인 패턴이라고 생각합니다.위의 LF 시나리오에서 주어진 PF에 대한 LF 목록을 얻는 것이 올바른 방법인지 궁금합니다. 스크립트가 프로그램을 호출해야 QSYS에 목록을 작성합니까? DSPDBR 명령의 파이프 출력을 구문 분석해야합니까? 그것은 DSPDBR에 의해 생성 된 출력 파일과 함께 작동해야합니까? QSYS 오브젝트를 조작하고 쉘 내에서 QSYS 오브젝트에 대한 메타 데이터를 얻으 려 할 때 사람들이 사용하는 공통 패턴은 무엇입니까? – smeep
@smeep 마지막 비트를 명확히하기 위해 질문을 편집 할 수 있습니까? (의견은 일시적 일 수 있습니다.) PASE에 더 관심이 있습니까? QShell은 OS와 비교적 잘 통합되어 있으며, PASE는 AIX 런타임에서 IBM i 기능을 복제하거나 액세스하기 위해보다 특정한 프로그래밍을 요구할 수 있습니다. – user2338816