테이블에 별칭으로 파일 경로를 저장했습니다(테이블의 필드에 비해 전체 경로가 너무 길기 때문입니다). 그러나 내 KSH 스크립트에서는 다음을 수행합니다.
nomtmp=`sqlplus -S bla/bla <<ENDOFSQL
select myPath
||'/'
|| 'myFileName'
|| '.xml'
from myTable;
exit
ENDOFSQL`
(myPath에는 $fic이 포함되어 있습니다) $fic는 별칭으로 해석되지 않으므로 스크립트는 별칭으로 해석되지 않는 "$fic" 디렉터리에서 파일을 찾습니다.
테이블의 내용을 수정할 수 없습니다. 별칭처럼 처리해야 한다는 것을 어떻게 알 수 있나요?
매우 감사합니다.
답변1
귀하의 SQL 쿼리는 nomtmp에 할당될 때 쉘 변수의 값으로 확장하려는 하위 문자열 $ifc를 반환하는 것으로 보입니다.
이 경우 쉘 eval 내장 명령을 포함하여 여러 가지 방법을 사용하여 이를 수행할 수 있습니다. 이 시도:
nomtmp=$(eval echo "$(sqlplus -S bla/bla <<ENDOFSQL
select myPath
||'/'
|| 'myFileName'
|| '.xml'
from myTable;
exit
ENDOFSQL)")
알아채다
$( ... )
동일합니까?
` ... `
그러나 전자는 중첩될 수 있으므로 더 바람직합니다. 또한 ${ifc}
데이터베이스에서 이를 대신 사용 하여 $ifc
앞뒤에 공백이 없는 실제 하위 문자열로 사용할 수 있습니다.