2017-01-04 4 views
0

나는 오랫동안 사용해온 bash 스크립트가 있습니다. 몇 줄의 데이터베이스가 시작/중지됩니다. 그것은 매우 간단하며 결코 실패하지 않습니다. 작년 12 월 사실 며칠 전 사실 :) 나는 전체 데이터를 새 컴퓨터로 마이그레이션했습니다. 그리고 나서 내 문제가 시작됩니다. 스크립트는 이전과 같이 작동하지만 이제 경고를 반환합니다. 출력 아래 : 경고에 언급 된 코드의bash 스크립트에서 경고를 숨기는 방법

[[email protected] ~]$ ./batch.sh stop 
./batch.sh: line 87: warning: here-document at line 85 delimited by end-of-file (wanted `!') 
./batch.sh: line 87: warning: here-document at line 85 delimited by end-of-file (wanted `!') 

Batch_Executer_1         [NOT OK] 

Batch_Executer_2         [NOT OK] 

[[email protected] ~]$ 

조각입니다 :

batch_stop() 
{ 
    for BATCH in $BATCHES 
    do 
    SQLRES=`sqlplus -S "/ as sysdba" << ! 
     exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE); 
    `  << line 87 
    done 
} 

은 그래서 질문/방지이 경고를 숨기는 방법입니다. 그것은 중요하지는 않지만, 스크립트는 효과가 있지만 경고는 방해가됩니다. 나는 버전 3.2.25를 배쉬하기 전에 그것을 보았지만 지금은 배쉬 4.1.2이다.

나는 수정 내 코드와 재 출력에 시도 :

{SQLRES=`sqlplus -S "/ as sysdba" << ! 
       exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE); 
      ` } 2>/dev/null 

하지만 (:(

+1

@ user3863616 여기에서 문서 구문을 수정하십시오. 예를 들어 [this] (https://gist.github.com/d2ccbe03143c350f5b11fe4dc1914e8e)를 시도해보십시오. –

+0

빙고, 문제 해결 ** (** ** ** 대신 ** ** ** 감사합니다! – user3863616

답변

1

경고 무효 here document 구문 즉, 두 번째 제한 단어로 인해 발생 "!" 도움이되지 않았다.)가 누락되었습니다.

또한 명령 대체에 역 따옴표를 사용하지 마십시오.보다 읽기 쉽고 중첩 될 수 있으므로 $(...) 구문을 대신 사용하십시오.

,

고정 버전 :

SQLRES=$(sqlplus -S "/ as sysdba" << ! 
exec dbms_scheduler.disable('"AIT"."${BATCH}"', TRUE); 
! 
) 

참고 여기 문서 (특히, 느낌표)에만 제한 단어를 포함하는 라인에서 종료한다. 따라서 두 번째 제한 단어를 들여 쓰기 할 수 없습니다.

+0

마지막 메모가 아마도 가장 중요합니다 :) 느낌표 앞뒤에 공백이 없습니다. – user3863616