我有这个适用于同事的函数,我也看到了它对其他人的用处。 我已经尝试了<<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"时,脚本停止工作!