ebs主机类型的请求中shell脚本调用sql查询数据,获取sql输出内容

ebs主机类型的请求中shell脚本调用sql+mutt发送邮件


ebs主机类型的请求可以查看我上一篇博客
最近有一个任务是要实现将服务器上的文件以发附件形式发邮件给用户。不知道怎么组织语言,直接上代码
我这边ebs前台会传过来一个参数,我需要根据这个参数查询出数据(收件人),收件人我是用表结构存放的,然后发邮件

retval=$(sqlplus -S "$1" <<EOF
		SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF  
		SELECT  pucif.VALUE p_value 
		FROM pay_user_tables put,
		pay_user_columns puc,
		pay_user_rows_f purf, 
		pay_user_column_instances_f pucif   
		WHERE put.user_table_id   = puc.user_table_id  
		AND put.user_table_id = purf.user_table_id    
		AND pucif.user_row_id= purf.user_row_id  
		AND pucif.user_column_id = puc.user_column_id  
		AND put.user_table_name  ='$7'; 
		EXIT
		EOF)

/usr/local/bin/mutt -e "set charset=utf-8 from=xxx@xxx.com content_type=text/html" -s "邮件主题" $retval  -a 文件路径/文件名称<xxx.html

1.$1是主机类型的并发请求中的参数1,即用户名/密码。
2.$7是前台传过来的一个参数
3.xxx.html 是邮件的正文
4.$retval 就是sql查询出来的结果
关于如何获取命令的输出内容
在shell脚本中我们有时需要获取命令的输出内容,然后根据输出内容判断下一步的执行操作。比较常用的一种方式就是采用反向单引号的方式
– 保存结果的变量名=`需要执行的linux命令`
但是推荐使用 保存结果的变量名=`需要执行的linux命令 2>&1 `的方式来获取命令的执行结果
具体原因可参考如下链接:
shell 脚本中获取命令的输出

5.$() 与``作用一样
6.EOF 实现执行sql,输出结果
在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“,再次返回到主调shell,可将其理解为分界符(delimiter)。既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:
交互式程序(命令)<<EOF
command1
command2…
EOF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值