неизвестная ошибка в оболочке

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

 > ./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, в чем может быть проблема, заранее спасибо за любую помощь


person lego69    schedule 31.05.2010    source источник
comment
Вам действительно нужно использовать tcsh вместо bash или даже оболочки Bourne? tcsh очень плохо подходит для сценариев и содержит много ошибок. Он был плох уже в 90-х, когда я им пользовался!   -  person Makis    schedule 31.05.2010
comment
Я знаю, но это только часть моего обучения, я хочу понять основы, так что вы можете мне помочь?   -  person lego69    schedule 31.05.2010


Ответы (2)


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

Unknown option: `-\r'

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

#! /bin/tcsh -f^M$
person John Kugelman    schedule 31.05.2010

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

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

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

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

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

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

person Makis    schedule 31.05.2010