为什么我得到 `(' 不匹配
Why am I getting `(' unmatched
我无法弄清楚为什么我会收到标题中定义的错误。
前几天,我在类似的脚本中遇到了同样的问题,但 `<<' 无法匹配。然后我发现 this 帮助我解决了我的问题。我无法对这个问题应用相同类型的修复程序。
我的街区:
+95 master_table=$(sqlplus -s <<- EOF
+96 ${SQLMSTR}
+97 select * from UTILS.PAGE_TO;
+98 EOF
+99 )
如果我在行 98
上删除 EOF
之前的所有空格,我可以让它工作。谁能帮我理解我做错了什么?
我正在使用 ksh93
我的 "other" 块来自一个有效的单独脚本(脚本的每一行前都有空格):
sqlplus -s <<- EOF
${SQLMSTR}
exec utils.change_page('${TEAM}');
EOF
将<<-
更改为<<
并将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;')
我无法弄清楚为什么我会收到标题中定义的错误。
前几天,我在类似的脚本中遇到了同样的问题,但 `<<' 无法匹配。然后我发现 this 帮助我解决了我的问题。我无法对这个问题应用相同类型的修复程序。
我的街区:
+95 master_table=$(sqlplus -s <<- EOF
+96 ${SQLMSTR}
+97 select * from UTILS.PAGE_TO;
+98 EOF
+99 )
如果我在行 98
上删除 EOF
之前的所有空格,我可以让它工作。谁能帮我理解我做错了什么?
我正在使用 ksh93
我的 "other" 块来自一个有效的单独脚本(脚本的每一行前都有空格):
sqlplus -s <<- EOF
${SQLMSTR}
exec utils.change_page('${TEAM}');
EOF
将<<-
更改为<<
并将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;')