Dlaczego, gdy próbuję zapisać funkcję w jednym wierszu do .bashrc
pliku,
list(){ ls -a }
Dostaję błąd?
bash: /home/kasiya/.bashrc: line num: syntax error: unexpected end of file
ale kiedy piszę to w wielu wierszach, jest w porządku?
list(){
ls -a
}
Odpowiedzi:
Funkcje w
bash
są zasadniczo nazwanymi poleceniami złożonymi (lub blokami kodu). Odman bash
:Nie podano żadnego powodu, to tylko składnia.
Ponieważ lista w podanej funkcji jednowierszowej nie jest zakończona znakiem nowej linii lub a
;
,bash
narzeka.źródło
Na
;
końcu funkcji jest potrzebne:powinno działać.
Składnia definicji funkcji dla bash jest określona jako
Pamiętaj, że zawiera on element,
;
który nie jest częściąlist
.To, co
;
jest wymagane w tym miejscu, jest rodzajem anomalii składni. Nie jestbash
specyficzny, jest taki samksh
, ale nie;
jest wymagany wzsh
.źródło
Koniec pojedynczego polecenia („;”) jest sugerowany przez nowy wiersz. W wersji oneline
}
jest analizowany jako argument niezakończonegols -a
polecenia. Które możesz zobaczyć, jeśli:Zobacz, jak polecenie w deklaracji funkcji połyka nawias klamrowy końcowy?
źródło