![字符串比较不适用于 sqlplus 输出](https://linux22.com/image/129339/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%20sqlplus%20%E8%BE%93%E5%87%BA.png)
代码:
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