我正在尝试使用shell脚本在SYBASE数据库上执行SQL查询 一个简单的查询来计算表中的行数。
#!/bin/sh
[ -f /etc/bash.bashrc.local ] && . /etc/bash.bashrc.local
. /gi/base_environ
. /usr/gi/bin/environ
. /usr/gi/bin/path
ISQL="isql <username> guest"
count() {
VAL=$( ${ISQL} <<EOSQL
set nocount on
go
set chained off
go
select count(*) from table_name
go
EOSQL
)
echo "VAL : $VAL"
echo $VAL | while read line
do
echo "line : $line"
done
}
count
上面的代码给出了如下输出
VAL : Password:
-----------
35
line : Password: ----------- 35
有没有办法只获得价值'35'。我在这里缺少什么?提前谢谢。
答案 0 :(得分:1)
&#34;选择计数(*)&#34;将结果集打印为输出,即列标题(此处为空白),每列的短划线以及每行的列值。这里只有1列和1行。 如果你想摆脱破折号,你可以做各种事情:
至于密码:&#39; line:你没有在&#39; isql&#39;中指定密码。命令,所以&#39; isql&#39;将提示它(因为它工作,看起来没有密码)。最好指定一个密码标志以避免此提示 - 或者如上所述过滤掉该部分。 顺便说一句,看起来你可能正在使用&#39; isql&#39;来自Unix / Linux ODBC安装,而不是&#39; isql&#39; Sybase附带的实用程序。最好使用后者(请查看&#39; isql&#39;)。