无法在ksh / bteq中创建函数

时间:2014-12-10 01:54:56

标签: ksh teradata

我有这个功能适用于同事,我也看到了它对其他人有用的地方。我试过了两个<< EOF和<

我已添加了该函数的简单用法以用于测试目的。

 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

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

1 个答案:

答案 0 :(得分:0)

你应该避免<<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程序。他是从stdin读的吗? 当我更换&#34; wc&#34;通过&#34; echo&#34;在上面的脚本中,脚本停止工作!