У меня есть этот очень простой скрипт csh.Событие не найдено csh
#!/bin/csh
echo "Hello World!"
echo "How are you today?"
Но я получаю ошибку ": Event not found.
Что не так?
У меня есть этот очень простой скрипт csh.Событие не найдено csh
#!/bin/csh
echo "Hello World!"
echo "How are you today?"
Но я получаю ошибку ": Event not found.
Что не так?
csh использует символ !
для замены истории. Таким образом, в последовательности !"
"
не рассматривается как закрывающая кавычка для строки; скорее, оболочка ищет что-то в вашей истории команд, начиная с "
, точно так же, как ввод !foo
в командной строке повторяет самую последнюю команду, начинающуюся с foo
.
По крайней мере, для исходного csh эта подстановка всегда выполняется даже в строках с одной кавычкой (поэтому изменение двойных кавычек в одинарные кавычки не обязательно поможет).
Единственный способ избежать !
персонажа есть с \
обратной косой черты.
#!/bin/csh -f
echo "Hello World\!"
echo "How are you today?"
(На некоторые системы, я считаю, что использование одиночные кавычки, а не двойные кавычки, это избежать ошибки, я думаю, что это потому что в этих системах /bin/csh
является символической ссылкой на /bin/tcsh
, который работает немного по-другому. вы не должны зависеть от того, что если вы хотите, чтобы ваш скрипт переносимым.)
Обратите внимание, что я также добавил -f
для линии #!
. Это предотвращает запуск оболочки $HOME/.cshrc
при запуске, и это, как правило, хорошая идея для сценариев csh. Это заставляет их работать немного быстрее, и это предотвращает случайную зависимость от вашего собственного .cshrc
, что может быть проблемой, когда другие запускают ваш скрипт.
И в любом вопросе о CSH сценариев, я по закону обязан [*], чтобы отправить эту ссылку:
http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot
[*] Я на самом деле не по закону обязан опубликовать эту ссылку.
TL; DR: «Что не так?» "CSH". +1 для обоих вопросов и ответов. – stevesliva
Измените 1-ю строку на '#!/Bin/csh -f' и повторите попытку. Это может быть связано с вашими '.cshrc' или' .tcshrc'. – timrau
пробовал. не работает – Programmer