2010-05-31 21 views
0

quelqu'un peut me expliquer ce que cela signifie d'erreur:erreur inconnue dans la coquille

> ./rank lines.in 
'nknown option: `- 
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ]. 

c'est mon rang de script:

#! /bin/tcsh -f 
set line = `cat ${1}` 
echo $line 

Je pense que le problème, c'est avec la première rangée #! /bin/tcsh -f Je travaille sur Windows! mais après avoir écrit un script sur Windows éditeur, je l'ai converti en utilisant dos2unix rank, quel peut être le problème, merci d'avance pour toute aide

+1

Avez-vous vraiment besoin d'utiliser tcsh au lieu de bash ou même Bourne shell? tcsh est très pauvre pour les scripts et contient beaucoup de bugs. C'était déjà pauvre dans les années 90 quand je l'ai utilisé! – Makis

+0

Je sais, mais c'est seulement une partie de mon étude, je veux comprendre les bases, alors pouvez-vous m'aider? – lego69

Répondre

2

Je ne pense pas que votre dos2unix a fonctionné. Il semble que vous ayez toujours un \r à la fin de la ligne de hachage qu'il n'aime pas. On dirait qu'il est de voir /bin/tcsh -f\r, l'interprétation que /bin/tcsh -f -\r, puis tenter d'imprimer le message d'erreur:

Unknown option: `-\r' 

Le \r est la citation de l'origine fin apparaisse au début de la ligne. Si vous voulez voir exactement ce qu'il y a dans votre fichier, essayez cat -A ./rank pour imprimer tous les caractères cachés. Vous verrez probablement

#! /bin/tcsh -f^M$ 
0

J'ai installé tcsh sur ma machine Linux et j'ai exécuté ce script et ça a marché, donc je suppose vos sauts de ligne sont faux. L'erreur semble simplement signifier que lorsque le shell tcsh est appelé, il reçoit des paramètres non valides. Je pense que ce qu'il obtient est l'ensemble du script en tant que liste de paramètres. J'ai essayé -f changer à -G (non reconnu comme un paramètre de tcsh) et je suis arrivé:

Unknown option: `-g' 
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ]. 

comment avis il me dit encore le nom du paramètre non valide?

Soit cela ou votre tcsh commence mal. Il est possible de donner des paramètres par défaut lors du démarrage d'un shell tcsh. Avez-vous essayé de commencer un? Mais en réalité, la seule raison d'apprendre tcsh serait si vous avez besoin de maintenir des scripts tcsh anciens. Et même alors, je commencerais par les convertir à un autre langage de script, si possible. Si vous voulez apprendre les scripts shell, essayez bash ou bourne shell. Il y a beaucoup de reasons pourquoi tcsh va juste vous rendre fou.