无法在 KSH/BTEQ 中创建函数



我有这个适用于同事的函数,我也看到了它对其他人的用处。 我已经尝试了<<EOF和<<p>出于测试目的,我还添加了对该函数的简单用法。

 td_query() { bteq << EOF |grep '^>' |sed -e "s/^>//"
 $(cat $HOME/.tdlogon)
   DATABASE DBNAME;
   .set width 1000;
   .set titledashes off;
   $1
.LOGOFF;
.QUIT;
.EXIT
EOF
}
td_query "select current_date;"

不幸的是,当我保存它并尝试运行 ksh 文件时,出现以下错误:

-ksh: .: syntax error: `<<' unmatched

谁能告诉我是什么原因造成的?

您应该避免在<<EOF和以 EOF 开头的行处都有空格。带有 EOF 的线也不应该有尾随空格。
首先使用简单的脚本进行测试(在EOF之前没有标识!

td_query() {
   wc <<EOF
   $(cat $HOME/.tdlogon)
   DATABASE DBNAME;
   .set width 1000;
   .set titledashes off;
   $1
.LOGOFF;
.QUIT;
.EXIT
EOF
}
td_query "select current_date;"

并检查 bteq 程序。他是从标准阅读吗?当我在上面的脚本中将"wc"替换为"echo"时,脚本停止工作!

最新更新