代码:
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 中。
为什么是我的如果条件不起作用(它总是运行 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