【问题标题】:0403-057 Syntax error at line 43 : `<' is not matched0403-057 第 43 行的语法错误:`<' 不匹配
【发布时间】:2018-11-09 02:43:55
【问题描述】:

我收到以下错误

0403-057 第 43 行的语法错误:`

用于 AIX 服务器上的以下 isql 连接对象。

isql -Uusername -Sserver -Ppassword -w 5000  -s"|" << EOF >>$LOG

我已经寻找了各种间距选项,但都一样。

$LOG 的值如下。

LOG="./log.txt"

这当然是在 isql 连接语句之前声明的。

请帮忙。提前致谢。

【问题讨论】:

  • 您是否尝试过删除&lt;&lt;EOF 之间的空格?你的 shell 是什么(echo $0 会告诉你)?
  • 是的,我做到了。全部都一样。我的外壳是 bash
  • 您是否将EOF 放在自己的行上,不缩进,放在输入的末尾?
  • 此邮件由ksh 而非bash 发送。您应该阅读以下内容:stackoverflow.com/help/mcve
  • @mwp 我没听明白。

标签: unix aix isql


【解决方案1】:

我想我在这里找到了答案。 不过,我不得不完全剥离我的脚本

while read line
do

echo "$line" | while IFS=\| read row_id col_name col_value
do

isql -Uusername -Sserver -Ppassword -w 5000  -s"|" << EOF >> $LOG

EOF

done < $FILE

我从上面的 while 循环中删除了所有的 sql 语句,以使其不那么混乱并且更容易找出罪魁祸首。发现我错过了关闭其中一个 while 循环。

下面是正确的循环。

while read line
do
echo "$line" | while IFS=\| read tranche_id col_name col_value
do

isql -Uusername -Sserver -Ppassword -w 5000  -s"|" << EOF >> $LOG

EOF

done

done < $FILE

很遗憾“完成”错过了我的想法。

【讨论】:

  • 用引号代替空格:cmd ... &lt;&lt;"EOF" &gt;&gt;"$LOG"
【解决方案2】:

如果您有以下错误;

^M:  not found.
0403-057 Syntax error at line x : `if' is not matched.

创建 .gitattributes 文件并插入下面的 shell 脚本。保存并将 .gitattributes 文件添加到您的项目中。

*.sh text eol=lf

此 .gitattributes 文件配置 .sh 文件以在 unix 中运行

【讨论】:

    猜你喜欢
    • 2017-09-10
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多