동적 성능 보기(v$asm_diskgroup)의 출력을 셸 스크립트의 변수에 할당

동적 성능 보기(v$asm_diskgroup)의 출력을 셸 스크립트의 변수에 할당

출력을 할당하려고 합니다.

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

관련 정보