为什么我会得到`('无与伦比

时间:2017-03-03 16:27:20

标签: unix ksh

我无法弄清楚为什么我会收到标题中定义的错误。

前几天我在类似的剧本中遇到了同样的麻烦,但是用了<<<<<<<<<<无法比拟的。然后我发现this帮我解决了问题。我在解决这个问题上遇到了同样的问题。

我的阻止:

   +95          master_table=$(sqlplus -s <<- EOF
   +96          ${SQLMSTR}
   +97          select * from UTILS.PAGE_TO;
   +98          EOF
   +99          )

如果我在EOF98之前移除所有空格,我可以让它工作。谁能帮我理解我做错了什么?

我正在使用ksh93

我的&#34;其他&#34;从一个有效的单独脚本中阻塞(在脚本的每一行之前有空格):

sqlplus -s <<- EOF
${SQLMSTR}
exec utils.change_page('${TEAM}');
EOF

1 个答案:

答案 0 :(得分:1)

<<-更改为<<并将EOF转移到该行的开头:

   +95          master_table=$(sqlplus -s << EOF
   +96          ${SQLMSTR}
   +97          select * from UTILS.PAGE_TO;
   +98  EOF
   +99          )

我知道它看起来很难看。解决此问题的一种方法是创建一个将SQL语句作为参数并运行它的函数。像这样:

function run_sqlplus() {
  sqlplus -s << EOF
    ${SQLMSTR}
    $@
EOF
}

    : indented code
    master_table=$(run_sqlplus 'select * from UTILS.PAGE_TO;')