Erlang 22.3在CentOS7执行.sh构建命令报错如何修复
报错根因
你遇到的报错是Erlang解析传入的执行代码时触发的语法错误,错误提示语法错误在逗号之前指向调用Erlang时传入的代码第一行存在格式问题,init terminating in do_boot说明错误发生在Erlang虚拟机启动加载代码阶段,和.sh脚本中调用Erlang的参数写法直接相关。
修复方案
- 首先定位脚本中调用
erl命令的行,优先检查-eval/-run参数后面跟的Erlang代码:- 确认所有Erlang表达式以英文句号
.结尾,多数此类报错都是脚本编写时漏了这个必要结尾 - 检查字符串引号是否配对、特殊符号是否正确转义,bash中双引号嵌套需要加反斜杠转义
- 检查逗号是否多余/缺失,比如参数列表最后一个元素后不要加多余逗号
- 确认所有Erlang表达式以英文句号
- 把
-eval后的代码单独复制到Erlang交互式shell中执行,确认没有语法报错后再放回shell脚本 - 如果脚本中有动态变量拼接Erlang代码,打印拼接后的完整代码内容,检查变量插值是否引入了多余的符号
- 参考正确的Erlang调用写法示例:
# 示例:在shell脚本中调用Erlang执行输出命令 erl -noshell -eval "io:format(\"hello world~n\", []), init:stop()."
额外排查建议
如果按上面步骤还是找不到问题,可以在erl启动参数中加上+v开启verbose日志,或者直接读取生成的erl_crash.dump文件,搜索syntax error相关字段定位具体出错的代码内容。
内容的提问来源于stack exchange,提问作者Nguyễn Minh Phương
相关产品推荐
相关产品推荐

