我是shell编程新手。
我必须验证某个sql查询是否返回任何元组/行。
如果返回值,则执行一个操作,否则执行另一个操作。像这样:
getResults(){
getAnyResults=`sqlplus -s $MMUSER/$MMPASS <<!
set verify off
set heading off
set feedback off
set pages 0
set pause off
set linesize 2500
select x, y, z
from A;
exit;
!`
}
编辑2/09/2021 -开始
CREATE TABLE A (
x INTEGER,
y INTEGER,
z INTEGER
);
SELECT * FROM A;
上面的代码不应该返回任何元组,因为我没有在表A中插入任何东西
但是如果我这样做:
CREATE TABLE A (
x INTEGER,
y INTEGER,
z INTEGER
);
INSERT INTO A
VALUES(1,2,3);
COMMIT;
SELECT * FROM A;
必须返回一个元组(1,2,3)
我想要的是验证是否有任何元组返回,如果是action1,如果任何元组没有返回,action2是
Edit 02/09/2021 - End
我将查询的结果存储在getAnyResults变量。
如果变量getAnyResults返回任何元组/行,否则进行另一个操作
最好的方法是什么?
如果getAnyResults
必须包含至少一个元组,您可以这样检查:
if echo "$getAnyResults" | grep -Eq "(.+)"; then
echo ACTION1
else
echo ACTION2
fi
当然,如果你需要的话,regexp可以更严格。
根据注释,您需要匹配x=1, y=2, z=3
或x=5, y=8, z=4
之类的东西。在这种情况下,合适的测试是:
echo "$getAnyResults" | grep -Eq "x=[0-9]+, y=[0-9]+, z=[0-9]+"