Bash 스크립트에서 여러 패키지 사양을 어떻게 컴파일할 수 있나요?

Bash 스크립트에서 여러 패키지 사양을 어떻게 컴파일할 수 있나요?

아래는 내 코드입니다. 패키지 사양을 컴파일하고(.pks 파일로 저장) 오류가 있으면 스크립트에서 오류가 발생해야 합니다. 그러나 이 코드는 제대로 작동하지 않습니다. 내가 이걸 어떻게 할 수 있지?

spec=`ls *.pks -1|sed -e ''s/\.pks$//''`;
if [ ! -z "$spec" ] ; then
for i in $spec; do
compile_spec()
{
sqlplus -s @user << EOF
WHENEVER SQLERROR EXIT SQL.SQLCODE;
SET LINES 255
SET PAGES 0
SET FEEDBACK OFF
SET ECHO OFF
SET PAGESIZE 0
SET TIMING OFF
SET SERVEROUTPUT ON
SET TERM ON
ALTER PACKAGE $i COMPILE PACKAGE;
EOF
}
done
PKS=`compile_spec`;
echo `$PKS`
if [ $? -ne 0 ]; then
  echo "error"
  exit 1
fi
fi

답변1

이것은 작동합니다:

for i in *.pks;do
        i=${i%.pks}
        sqlplus -s @user << EOF
                WHENEVER SQLERROR EXIT SQL.SQLCODE;
                SET LINES 255
                SET PAGES 0
                SET FEEDBACK OFF
                SET ECHO OFF
                SET PAGESIZE 0
                SET TIMING OFF
                SET SERVEROUTPUT ON
                SET TERM ON
                ALTER PACKAGE $i COMPILE PACKAGE;
        EOF
        if [ $? -ne 0 ]; then
                echo "error"
                exit 1
        fi
done

방금 sqlplus명령을 함수 밖으로 이동하고 뒤에 두었으므로 if [ $? -ne 0 ]0이 아닌 값을 반환하면 종료되어야 합니다. sqlplus게시한 스크립트는 를 반환하는 if [ $? -ne 0 ]명령 뒤에 옵니다 .echo0

구문 분석 때문에 ls명령의 명령 도 변경했습니다 .findls

ilkkachu의 의견을 바탕으로 편집되었습니다.

관련 정보