문자열 비교가 sqlplus 출력에서 ​​작동하지 않습니다.

문자열 비교가 sqlplus 출력에서 ​​작동하지 않습니다.

암호:

iIMSI=`sqlplus -s ${APP_ORA_USER}/${APP_ORA_PASS}@${APP_DB_INST} << EOF
SET HEAD OFF PAGESIZE 0 LINESIZE 1000 TRIMOUT ON TIMING OFF
select resource_value from agd1_resources where resource_type='3'
and subscriber_id in (select subscriber_id from agd1_resources where resource_value='$sSUBSCRIBER');
exit;
EOF`

if [ "$iIMSI" = "no rows selected" ]; then
echo hello
else echo elseblock
fi

질문:

내가 지정한 값이 sSUBSCRIBER테이블에 존재하지 않아 쿼리 결과는 "선택한 행이 없습니다"이며 iIMSI에 저장합니다.

왜 내꺼야?if 조건작동하지 않나요(항상 else 블록을 실행함)?

답변1

변수에 예상된 값이 있는지 확인하려면 echo "$iIMSI"if 문 위 줄에 변수를 삽입하세요.

나는 다음 스크립트를 시도했다

$ cat test.sh
#!/bin/bash

iIMSI="no rows selected"
if [ "$iIMSI" = "no rows selected" ]; then
echo hello
else echo elseblock
fi

예상대로 작동합니다.

$ ./test.sh 
hello

관련 정보