неизвестная ошибка в оболочке - PullRequest
0 голосов
/ 31 мая 2010

Может кто-нибудь объяснить мне, что означает эта ошибка:

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

это мой сценарий звания:

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

Я думаю, что у меня проблема с первым рядом #! /bin/tcsh -f Я работаю на Windows! но после того, как я написал скрипт в редакторе Windows, я преобразовал его с помощью dos2unix rank, в чем может быть проблема, заранее спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 31 мая 2010

Не думаю, что ваш dos2unix сработал. Похоже, у вас все еще есть \r в конце строки хэш-бэна, что ему не нравится. Похоже, он видит /bin/tcsh -f\r, интерпретирует его как /bin/tcsh -f -\r, а затем пытается напечатать сообщение об ошибке:

Unknown option: `-\r'

\r приводит к появлению конечной кавычки в начале строки. Если вы хотите точно увидеть, что находится в вашем файле, попробуйте cat -A ./rank напечатать все скрытые символы. Вы, вероятно, увидите

#! /bin/tcsh -f^M$
0 голосов
/ 31 мая 2010

Я установил tcsh на свой компьютер с Linux и запустил этот скрипт, и он сработал, так что я думаю, что разрывы строк неправильные.

Ошибка просто означает, что при вызове оболочки tcsh она получает недопустимые параметры. Я думаю, что он получает весь скрипт в виде списка параметров. Я попытался изменить -f на -g (не распознается как параметр tcsh), и я получил:

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

Обратите внимание, как он все еще сообщает мне имя недопустимого параметра?

Либо это, либо ваш tcsh запускается неправильно. Можно указать параметры по умолчанию при запуске оболочки tcsh. Вы пробовали начать один?

Но на самом деле единственной причиной изучения tcsh будет то, что вам нужно поддерживать некоторые старые сценарии tcsh. И даже тогда я бы начал с преобразования их в какой-нибудь другой язык сценариев, если это вообще возможно. Если вы хотите изучить сценарии оболочки, попробуйте bash или bourne shell. Существует множество причин , почему tcsh просто рассердит вас.

...