我正在尝试编译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
答案 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)