2011-06-24 24 views
29

Próbuję skompilować oprogramowanie NIST do biometrycznego obrazu i mam problemy przez cały dzień. I wreszcie źródłem wyrejestrowany prawo, a po zainstalowaniu Cygwin bez problemów (Użyłem go w przeszłości), ale kiedy poszedłem do kompilacji, otrzymuję ten błąd:

$ 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 

teraz jestem pewny każdy zaawansowany koder powinien udać się do setup.sh i szukać problemów, ale nie jestem zbyt dobrym programistą (kompiluję to tylko dlatego, że nie ma wstępnie skompilowanych pakietów), więc nie wiem, co robić . Nie instalowałem żadnych bibliotek z cygwin, po prostu zostawiłem wszystko domyślnie. Staram się postępować zgodnie z instrukcją NBIS, ale tak naprawdę nie rozumiem tego dobrze i dlatego źle walczę. Patrząc na to możesz zauważyć coś, czego mi brakowało: http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

Odpowiedz

7

System Windows używa dwóch znaków (CR i LF lub \r\n) do oznaczenia końca wiersza w pliku tekstowym. Unix, Linux i (domyślnie) Cygwin używa pojedynczego znaku LF lub znaku "\ n". Niektóre narzędzia Cygwin są w stanie radzić sobie z dowolnym formatem, ale sh zwykle nie może.

Wygląda na to, że setup.sh używa zakończeń linii w stylu Windows - lub przynajmniej linii 94.

Nie znalazłem pobranego źródła, ale jeśli są one rozprowadzane jako plik zip, może być konieczne wyodrębnienie ich za pomocą polecenia Cygwin unzip za pomocą opcji -a, aby wszelkie zakończenia linii były automatycznie konwertowane.

Ale podejrzewam, że jest w tym coś więcej. Rozpakowany plik setup.sh nie powinien mieć żadnych zakończeń linii w stylu systemu Windows, a jeśli tak, to nie wiem, dlaczego problem nie pojawił się do linii 94.

Jeśli możesz publikować adres URL do pobrania źródła, I'll spójrz na setup.exe.

40

Aby przekonwertować setup.sh do Unix zakończeń linii na Cygwin użyć

dos2unix setup.sh 
9

łatwy sposób przekonwertować plik do example.sh UNIX jest stosowanie Notepad ++ (Edycja> EOL konwersji> UNIX/OSX Format)

można również ustawić domyślny EOL w Notepad ++ (Ustawienia> Preferencje> Nowy dokument/Default Directory> wybierz Unix/OSX pod polu Format)

18

run

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

, aby poprawić końcówki linii