我无法弄清楚为什么我会收到标题中定义的错误。
前几天我在类似的剧本中遇到了同样的麻烦,但是用了<<<<<<<<<<无法比拟的。然后我发现this帮我解决了问题。我在解决这个问题上遇到了同样的问题。
我的阻止:
+95 master_table=$(sqlplus -s <<- EOF
+96 ${SQLMSTR}
+97 select * from UTILS.PAGE_TO;
+98 EOF
+99 )
如果我在EOF
行98
之前移除所有空格,我可以让它工作。谁能帮我理解我做错了什么?
我正在使用ksh93
我的&#34;其他&#34;从一个有效的单独脚本中阻塞(在脚本的每一行之前有空格):
sqlplus -s <<- EOF
${SQLMSTR}
exec utils.change_page('${TEAM}');
EOF
答案 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;')