パスワード:
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