출력을 할당하려고 합니다.
v$asm_diskgroup에서 이름을 선택하십시오.
쉘의 변수에. 테이블 이름에 특수 문자 "$"가 있어서 스크립트가 실패합니다.
참고: "듀얼에서 sysdate 선택" 값을 할당하려고 하면 매력처럼 작동합니다.
어떤 도움이라도 대단히 감사하겠습니다.
유효한 쿼리:
count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
select sysdate from dual;
exit;
END
)
echo $count
문제가 있는 쿼리:
count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
select name from v$asm_diskgroup
exit;
END
)
echo $count
답변1
$가 포함된 문자열을 작은따옴표로 묶어야 합니다.
value=$(... 'select name from v$asm_diskgroup;')
그렇지 않으면 쉘은 asm_diskgroup이라는 변수를 확장하려고 시도합니다. 쉘은 작은따옴표 안에 변수를 확장하지 않습니다.
답변2
간단한 해결 방법을 찾았습니다.
사용하는 대신
v$asm_diskgroup
변수에 할당했어요
tab='v$asm_diskgroup'
count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
select name from $tab;
exit;
END
)
echo $count