免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4071 | 回复: 15
打印 上一主题 下一主题

请教Shell中结合数据库操作的变量赋值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-06 17:05 |只看该作者 |倒序浏览
小弟有需求如下:将isql命令中返回的日期传递到$trandate中,以供下面的shell内容判断,但是怎么尝试都发现不对,有哪位大虾试过,有没有解决方案?

test.sh的内容如下:

. /opt/sybase-12.5/POS/posenv

trandate=""

$ISQL_dir/isql -U$DUMPUSER -P$DUMPPWD -S$MYSERVER << EOF
use zdposht
go
select '$trandate' = convert(char(,trandate,112) from sys_autotrandate
go
EOF

echo "TESTRESULT:"$trandate

论坛徽章:
0
2 [报告]
发表于 2006-06-06 18:56 |只看该作者
先导出到文件再读取吧

论坛徽章:
0
3 [报告]
发表于 2006-06-06 19:31 |只看该作者
这个我也想过, 不过我要的数据只有一个啊, 没有其他方法了?

论坛徽章:
0
4 [报告]
发表于 2006-06-07 10:32 |只看该作者
生成文件如下:

--------
20060601

(1 row affected)

问一下各位大虾, 我只读取第3行, 应该怎么写?

论坛徽章:
0
5 [报告]
发表于 2006-06-07 10:46 |只看该作者
使用sed 来读取 ,sed -n '3p' filname

论坛徽章:
0
6 [报告]
发表于 2006-06-07 10:52 |只看该作者
Thanks pvb1979 , 很简单方便的解决了。

论坛徽章:
0
7 [报告]
发表于 2006-06-07 12:18 |只看该作者
A=$(sqlplus -s system/aspire@TEST << EOF
set head off;
set echo off;
set feedback off;
set head off;
set serveroutput on;
declare
inum number;
begin
select 1 into inum from dual;
dbms_output.put_line(inum);
end;
/
exit
EOF
)


或者
在select的时候加入特殊标记符号,如:select 'DATEOUT'|| 1 from dual;再SPOOL出来,用GREP准确定位.

[ 本帖最后由 轩静天 于 2006-6-7 13:23 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-06-07 15:24 |只看该作者
1 . 试验过, 发现serveroutput并不是sybase关键字啊
2 . 能否详细介绍一下spool如何操作?

论坛徽章:
0
9 [报告]
发表于 2006-06-07 19:53 |只看该作者
sybase不能直接倒成一行么?你是直接把查询结果重定向了。

论坛徽章:
0
10 [报告]
发表于 2006-06-07 22:59 |只看该作者
fun_day()
{
( $ISQL_dir/isql -U$DUMPUSER -P$DUMPPWD -S$MYSERVER)|awk 'substr($1,1,1)~/2/{print $1}` << EOF
use zdposht
go
select  convert(char(,trandate,112) from sys_autotrandate
go
EOF
}
trandate=`fun_day`
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP