在shell脚本中执行的抓取SQL

在shell脚本中执行的抓取SQL,sql,unix,shell,sybase,Sql,Unix,Shell,Sybase,给定一个包含大量SQL语句的shell脚本,是否有一个选项可以将SQL语句重定向到stdout/file 脚本的结构如下所示: *列表中的i的 做 isql*credentials etc*虽然您也会得到输出,但-e(通常带有-n)选项将回显输入。如果您不想有输出选择等,您需要编写一个名为isql的函数,将命令行回送到一个文件,并运行isql到另一个文件 (在perl或python中更容易)使用一个变量保存您的here文档,然后您可以回显它 for i in *list* do

给定一个包含大量SQL语句的shell脚本,是否有一个选项可以将SQL语句重定向到stdout/file

脚本的结构如下所示:

*列表中的i的

做
isql*credentials etc*虽然您也会得到输出,但-e(通常带有-n)选项将回显输入。如果您不想有输出选择等,您需要编写一个名为isql的函数,将命令行回送到一个文件,并运行isql到另一个文件

(在perl或python中更容易)

使用一个变量保存您的here文档,然后您可以回显它

for i in *list*  
do  
    read -r -d '' select <<-EOF
        select *about 100 cols*  
        from $i + "_TAB"  
        go  
        EOF  
    isql *credentials etc* <<< "$select"
    echo "$select" > a.out
done
*列表中的i的

read-r-d“”选择为延迟回复道歉。是的,这个选项会起作用,但我希望我不必编写太多代码:)无论如何,谢谢你,马克!丹尼斯,我也为迟来的回复向你道歉。我试过了,但根本没用。首先,
echo$select
给了我一个有趣的输出(列出了pwd中的所有文件),然后DB没有返回任何记录(应该是;查询是正确的)。很抱歉,
$select
应该有引号,因为您的查询可能有星号。我已经编辑了我的答案。
for i in *list*  
do  
    read -r -d '' select <<-EOF
        select *about 100 cols*  
        from $i + "_TAB"  
        go  
        EOF  
    isql *credentials etc* <<< "$select"
    echo "$select" > a.out
done