\ r''中意外标记“$”附近的语法错误

时间:2011-06-24 21:05:02

标签: cygwin syntax-error token biometrics

我正在尝试编译NIST生物识别图像软件,我整天都遇到了麻烦。我终于检查了源代码,我安装了cygwin没有问题(我以前使用过它),但是当我去编译时,我收到了这个错误:

 $  sh setup.sh </cygdrive/c/NBIS> [--without-X11]
 setup.sh: line 94: syntax error near unexpected token `$'in\r''
 'etup.sh: line 94: `    case $1 in

现在我确定任何高级编码器都会前往setup.sh并寻找问题,但我并不是一个真正的编码器(我只是编译它因为没有预编译的包)所以我不知道该怎么办。我没有用cygwin安装任何库,我只是将所有内容都保留为默认值。我正在尝试遵循NBIS手册,但我并不是那么理解,所以我很难挣扎。 Maybye看一看你可能会注意到我遗漏的东西:http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

5 个答案:

答案 0 :(得分:48)

要在Cygwin上将setup.sh转换为Unix行结尾,请使用

dos2unix setup.sh

答案 1 :(得分:30)

运行

sed -i 's/\r//' setup.sh

修复你的行结尾

答案 2 :(得分:13)

将example.sh文件转换为unix的简便方法是使用NotePad ++(编辑&gt; EOL转换&gt; UNIX / OSX格式)

您还可以在记事本++中设置默认EOL(设置&gt;偏好设置&gt;新文档/默认目录&gt;在格式框下选择Unix / OSX)

答案 3 :(得分:7)

Windows使用两个字符(CR和LF,或\r\n)来标记文本文件中一行的结尾。 Unix,Linux和(默认情况下)Cygwin使用单个LF或'\ n'字符。一些Cygwin工具能够处理这两种格式,但通常不能处理。

看起来setup.sh使用Windows风格的行结尾 - 或至少第94行。

我没有找到源代码的下载,但是如果它们作为zip文件分发,您可能需要使用带有unzip选项的Cygwin -a命令来提取它们,所以任何行结尾都会自动转换。

但我怀疑它还有更多。分布式setup.sh文件首先不应该有任何Windows样式的行结尾,如果是,我不知道为什么问题不会出现在第94行之前。

如果您可以发布源代码下载的网址,我会看一下setup.exe

答案 4 :(得分:1)

在pycharm中,您可以通过单击屏幕右下角的字母CRLF并选择LF来快速更改行尾。

pycharm line endings location