2011-06-24 25 views
29

Estoy tratando de compilar el software de imagen biométrica NIST, y he estado teniendo problemas todo el día. Finalmente conseguí la fuente desprotegido derecha, y he instalado cygwin sin problemas (lo he utilizado en el pasado), pero cuando fui a compilar, obtengo este error:

$ 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 

Ahora estoy seguro cualquier codificador avanzado se dirigiría a setup.sh y buscaría problemas, pero no soy muy codificador (solo estoy compilando esto porque no hay paquetes precompilados) así que no sé qué hacer . No instalé ninguna biblioteca con cygwin, simplemente dejé todo por defecto. Intento seguir el manual de NBIS, pero realmente no lo entiendo tan bien y estoy teniendo problemas. Maybye echándole un vistazo puede notar algo que omití: http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

Respuesta

7

Windows usa dos caracteres (CR y LF, o \r\n) para marcar el final de una línea en un archivo de texto. Unix, Linux y (de forma predeterminada) Cygwin utiliza un único carácter LF o '\ n'. Algunas herramientas de Cygwin son capaces de manejar cualquier formato, pero generalmente no pueden hacerlo.

Parece que setup.sh utiliza terminaciones de línea estilo Windows, o al menos la línea 94 sí lo hace.

No encontré la descarga de las fuentes, pero si se distribuyen como un archivo comprimido, puede necesitar extraerlas con el comando Cygwin con la opción -a, por lo que las terminaciones de línea se convierten automáticamente.

Pero sospecho que hay más que eso. El archivo distribuido setup.sh no debería haber tenido terminaciones de línea estilo Windows en primer lugar, y si lo hiciera, no sé por qué el problema no se mostraría hasta la línea 94.

Si puede publicar la URL para la descarga de la fuente, eche un vistazo al setup.exe.

40

Para convertir setup.sh a finales de línea Unix en Cygwin, utilice

dos2unix setup.sh 
9

manera fácil de convertir archivos de UNIX es example.sh uso Notepad ++ (Edición> Conversión EOL> UNIX/OSX Formato)

también puede establecer la EOL defecto en notepad ++ (Configuración> Preferencias> Nuevo documento/directorio predeterminado> seleccione Unix/OSX bajo el cuadro Formato)

18

plazo

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

para reparar sus terminaciones de línea

Cuestiones relacionadas