将字符串变量传递给函数ksh

时间:2014-10-28 12:56:26

标签: unix ksh

我正在尝试在函数内传递字符串变量(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等待命令......

1 个答案:

答案 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;")