我正在尝试在函数内传递字符串变量(bteq本身确实有效),但似乎无法使它工作。我试试这个:
td_instance="one"
user="usr1"
pass="pass1"
schemaName="schemaA"
tblName="tableA"
query="SEL '>'||COUNT(*) FROM $schemaName.$tblName"
query_td() { bteq .LOGON $td_instance/$user,$pass
DATABASE $schemaName;
.set width 1000;
.set titledashes off;
$1;
.LOGOFF;
.QUIT;
.EXIT
}
echo $(query_td << EOF |grep '^>' |sed -e "s/^>//" EOF "$query")
并不断收到此错误:
-ksh: .: syntax error: `)' unexpected
我已经移动了很多竞争对手,但似乎仍然无法让它工作......当我移动东西时我不断得到同样的错误,所以不知道这里有什么问题,但我知道有些事情是...... ..
--------- UPDATE ------------
所以基于下面的评论......我试图简化它以便更容易调试......我现在已经有了这个功能......
query_td() {
bteq "$(cat $HOME/.tdlogon) DATABASE $schemaName; .set width 1000; .set titledashes off; $1 .EXIT"
}
query_td $query
但现在似乎运行了
bteq "$(cat $HOME/.tdlogon)
但由于某种原因,不会运行任何超出该功能部分的内容。它启动bteq程序并登录,但随后只是坐在bteq等待命令......
答案 0 :(得分:0)
以下是我能够如何实现这一点......在声明中移动EOF ......我认为这也是你们所提到的,对吧?
td_query () { bteq << EOF |grep '^>' |sed -e "s/^>//"
$(cat $HOME/.tdlogon)
DATABASE $schemaName;
.set width 1000;
.set titledashes off;
$1
.LOGOFF;
.QUIT;
.EXIT
EOF
}
echo "the date is: " $(td_query "SEL '>'||current_date;")