linux - 带有多行 heredoc 的 Bash 脚本不输出任何内容
问题描述
我正在编写一个脚本以在邮件中发送 SQL 输出,但它没有成功执行并且没有生成我想要的输出。
该查询生成具有多行的两列。如何生成如下表格格式的输出?
下面是我的代码:
#!/bin/bash
ORACLE_HOME= **PATH
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH
TNS_ADMIN= ** PATH
export TNS_ADMIN
today=$(date +%d-%m-%Y)
output=$(sqlplus -S user/pass@service <<EOF
set heading off;
SELECT distinct list_name ,max(captured_dttm) as Last_received FROM db.table1
group by list_name having max(captured_dttm) <= trunc(sysdate - interval '2' hour);
EOF)
if [ -z "$output" ];
then
echo"its fine"
exit
else
echo "
Dear All,
Kindly check we've not received the list for last 2 hour : $output
Regards,
Team" | mailx -S smtp=XX.XX.X.XX:XX -s "URGENT! Please check list FOR $today" user@abc.com
fi
解决方案
使用 here 文档时,结束字符串后面不能跟任何内容,只能是换行符。将右括号移到下一行:
output=$(sqlplus -S user/pass@service <<EOF
...
EOF
)
推荐阅读
- javascript - 引用对象的变量 id 和使用“this”有什么区别吗?
- javascript - 函数构造函数与 eval
- python - 字符串到 Tensorflow 中的 one_hot 张量
- c++ - C++ 为什么我的递归函数在我融合循环时表现不同?
- java - Spring Annotation 缺少 requestBody
- mysql - MYSQL 错误 1054 (42S22):“where 子句”中的未知列
- javascript - 如何使用 ctx.drawImage 将数组中的随机图像推送到画布上?
- c++ - char[] 和 int[] 的区别
- android - RxJava - 摆脱blockingGet(),但等待返回语句直到调用onComplete
- android - 如何使用 list-index-string 中的 findViewById() 。findViewById(R.id."List.get(indexnumber)")?