Shell脚本执行报错 :Syntax error: “(” unexpected (expecting “fi”)
今天在Ubuntu 16.04上运行某些脚本时,总是报告某行“Syntax error: “(” unexpected (expecting “fi”)”错误。
查了一下脚本没有发现错误,经过搜索说可能是sh的链接问题。
首先到/bin/下面查看当前链接:ls -l /bin/sh
发现sh默认是指向dash的。按照文末参考文章中的方法修改链接,似乎还是没有效果。
经过搜索发现dash和bash是不同的(一直把dash看成bash了!!),那么到底是bash还是该是dash呢,Ubuntu安装时默认使用dash,据说dash比bash体积小速度快,但原来在bash下正常运行sh脚本在dash下运行往往有问题,而且提示错误模糊,说明dash的兼容似乎也有问题。
规避问题的方法,就是重新配置dash:
sudo dpkg-reconfigure dash
会弹出重新配置dash界面,并选择“no”不使用dash。
Shell脚本报错:syntax error near unexpected token `$’\r’’
可能出现的原因
复制过程出现错误
跨平台
解决方案—即可解决

在Ubuntu 16.04上遇到Shell脚本执行错误,如'Syntax error: "(” unexpected (expecting “fi”)”',原因是sh默认指向dash。尽管尝试将dash重置为bash,问题仍存在。解决办法是通过'dpkg-reconfigure dash'禁用dash。此外,还遇到了'syntax error near unexpected token `$’
’’'的报错,通常由换行符问题引起,解决方案未详述。
订阅专栏 解锁全文

4581

被折叠的 条评论
为什么被折叠?



