Почему, когда я пытаюсь написать функцию только в одну строку в .bashrc
файл,
list(){ ls -a }
Я получаю ошибку?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of file
но когда я пишу это в несколько строк, это нормально?
list(){
ls -a
}
Ответы:
Функции в
bash
основном называются составными командами (или блоками кода). Отman bash
:Причина не указана, это всего лишь синтаксис.
Поскольку список в данной однострочной функции не заканчивается символом новой строки или a
;
,bash
жалуется.источник
В
;
конце функции необходимо:должно сработать.
Синтаксис определения функции для bash определяется как
Обратите внимание, что он включает в себя то,
;
что не является частьюlist
.То, что
;
требуется в этом месте, является своего рода синтаксической аномалией. Это не являетсяbash
конкретным, это то же самое дляksh
, но это;
не требуется вzsh
.источник
Конец единственной команды (";") подразумевается переводом строки. В oneline версия
}
разбирается как аргумент для неопределеннойls -a
команды. Что вы можете увидеть, если вы делаете:Посмотрите, как команда в объявлении функции проглатывает конечную фигурную скобку?
источник