web-dev-qa-db-fra.com

erreur de syntaxe près du jeton inattendu `$ 'in \ r' '

J'essaie de compiler le logiciel d'images biométriques NIST, et j'ai eu des problèmes toute la journée. J'ai finalement vérifié la source correctement et j'ai installé cygwin sans problème (je l'ai utilisé dans le passé), mais quand je suis allé compiler, j'ai cette erreur:

 $  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

Maintenant, je suis sûr que n'importe quel codeur avancé se dirigera vers setup.sh et recherchera des problèmes, mais je ne suis pas vraiment un codeur (je ne compile cela que parce qu'il n'y a pas de packages précompilés), donc je ne ' Je ne sais pas quoi faire. Je n'ai installé aucune bibliothèque avec cygwin, je viens de tout laisser par défaut. J'essaie de suivre le manuel du NBIS, mais je ne le comprends pas très bien et je me bats donc mal. En y jetant un coup d'œil, vous remarquerez peut-être quelque chose que j'ai manqué: http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

37
David

Convertir setup.sh aux fins de ligne Unix sur Cygwin, utilisez

dos2unix setup.sh
50
Jens

courir

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

pour corriger vos fins de ligne

33
Frank Hayward

Un moyen facile de convertir un fichier example.sh en unix est d'utiliser NotePad ++ (Édition> Conversion EOL> Format UNIX/OSX)

Vous pouvez également définir l'EOL par défaut dans le bloc-notes ++ (Paramètres> Préférences> Nouveau document/Répertoire par défaut> sélectionnez Unix/OSX dans la zone Format)

15
Eftekhari

Windows utilise deux caractères (CR et LF, ou \r\n) pour marquer la fin d'une ligne dans un fichier texte. Unix, Linux et (par défaut) Cygwin utilisent un seul caractère LF ou '\ n'. Certains outils Cygwin sont capables de gérer les deux formats, mais sh ne le peut généralement pas.

On dirait setup.sh utilise des fins de ligne de style Windows - ou du moins la ligne 94.

Je n'ai pas trouvé le téléchargement des sources, mais si elles sont distribuées sous forme de fichier Zip, vous devrez peut-être les extraire à l'aide de la commande Cygwin unzip avec la -a option, donc toutes les fins de ligne sont automatiquement converties.

Mais je suppose qu'il y a plus que cela. Le setup.sh le fichier n'aurait pas dû avoir de fin de ligne de style Windows en premier lieu, et si c'était le cas, je ne sais pas pourquoi le problème n'apparaîtrait pas avant la ligne 94.

Si vous pouvez publier l'URL du téléchargement source, je vais jeter un œil à setup.exe.

7
Keith Thompson