验证sql查询是否返回.sh文件中的任何行



我是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=3x=5, y=8, z=4之类的东西。在这种情况下,合适的测试是:

echo "$getAnyResults" | grep -Eq "x=[0-9]+, y=[0-9]+, z=[0-9]+"

相关内容

  • 没有找到相关文章

最新更新