/ / невідома помилка в оболонці - сценарій, csh, tcsh

невідома помилка в оболонці - сценаріїв, csh, tcsh

хтось може мені пояснити, що означає ця помилка:

 > ./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 для відповіді № 1

Я не думаю про тебе dos2unix працювали. Здається, у вас все ще є r в кінці лінії хеш-бангу, що це не подобається. Схоже, це бачить /bin/tcsh -fr, трактуючи це як /bin/tcsh -f -r, а потім спроба роздрукувати повідомлення про помилку:

Unknown option: `-r"

The r викликає кінцеву цитату на початку рядка. Якщо ви хочете побачити, що саме є у вашому файлі, спробуйте cat -A ./rank для друку всіх прихованих символів. Ви, мабуть, побачите

#! /bin/tcsh -f^M$

0 для відповіді № 2

Я встановив tcsh до своєї скриньки Linux і запустив цей скрипт, і він спрацював, тому я гадаю, що ваші розриви рядків неправильні.

Помилка просто, здається, означає, що коли tcshоболонка називається вона отримує недійсні параметри. Я думаю, що це отримує весь сценарій як список параметрів. Я спробував змінити -f на -g (не розпізнається як параметр tcsh) і отримав:

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

Зауважте, як воно все ще вказує мені ім’я недійсного параметра?

Або це, або ваш tcsh починається неправильно. Можливо надати параметри за замовчуванням при запуску оболонки tcsh. Ви спробували почати його?

Але дійсно, єдиний привід вивчити tcsh биякщо вам потрібно підтримувати вікові сценарії tcsh. І навіть тоді я б почав з перетворення їх на якусь іншу мову сценаріїв, якщо це взагалі можливо. Якщо ви хочете навчитися розробці сценаріїв оболонок, спробуйте bash або bourne shell. Тут багато причин чому tcsh просто зведе з розуму.