栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

意外令牌'-bash附近的语法错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

意外令牌'-bash附近的语法错误

这可能是文件编码问题。

在不同操作系统和编辑器之间处理文件时遇到了文件类型编码问题,在我的情况下,尤其是在Linux和Windows系统之间。

我建议检查文件的编码,以确保它适合目标linux环境。与使用Windows文本编辑器相比,与使用Windows文本编辑器相比,使用MAC编码的可能性较小,但是我认为文件编码仍然值得考虑。

-–编辑(按照@Potatoswatter的建议添加实际的解决方案)

为了演示文件类型编码可能是这个问题的方法,我将示例脚本复制/粘贴到Windows的记事本中(我无法访问Mac),然后将其复制到Linux机器并运行:

jdt@cookielin01:~/windows> sh ./originalfile  ./originalfile: line 2: syntax error near unexpected token `$'{r'''/originalfile: line 2: `test() {

在这种情况下,记事本使用回车符和换行符保存了文件,从而导致上面显示的错误。该

r
表示回车(Linux系统终止换行符行
n
只)。

在Linux机器上,您可以通过运行以下命令从文件中删除回车符(如果存在)来测试此理论:

cat originalfile | tr -d "r" > newfile

然后尝试运行新文件

sh ./newfile
。如果可行,则问题是回车以隐藏字符的形式出现。

注意: 这不是您环境的精确复制(我无法使用Mac),但是在我看来,问题似乎是某个地方保存了回车符的编辑器返回了文件。

-/编辑

为了详细说明,操作系统和编辑器可以具有不同的文件编码默认值。通常,应用程序和编辑器将影响所使用的文件类型编码,例如,我认为MicrosoftNotepad和Notepad++默认为Windows-1252。也可能需要考虑换行符的差异(在Windows环境中,回车符和换行符通常用于终止文件中的行,而在Linux和OSX中,通常仅使用换行符)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号