在Bash中检查数据库表是否存在

3
在bash脚本中,我该如何判断Ingres数据库是否包含特定的表格?
我认为我需要像这样的东西:
sql $db << ENDSQL | grep 'TRUE' > /dev/null
select 'TRUE' from iitables where table_name like '$tablename%'
\p\g
ENDSQL
result=$?

但是这总是返回1(未找到)。一个字面上的'mytable%'有效,所以我认为问题在于我的引用(或缺乏引用)。 \p打印了我的SQL语句,$tablename被展开,即使它在单引号内部,所以不是那个问题。 感谢任何建议。

你的脚本对我有用,只要设置了数据库。但是它总是返回0,因为\p - 你正在打印查询,其中包括你正在搜索的字符串TRUE。 - PaulM
@PaulM,但我的问题是它总是返回1而不是0。去掉\p也没有任何区别。 - rojomoke
1个回答

0

这里文档语法非常挑剔,尝试使用here statement代替(它并不会更加混乱):

sql $db <<< "select 'TRUE' from iitables where table_name like '$tablename%'
\p\g" | grep 'TRUE' > /dev/null
result=$?

请注意<<<和双引号的位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接