Uczę się skryptów bash i znalazłem to na moim / usr / share / bash-complete, wiersz 305:
local cword words=()
Co to robi? Wszystkie samouczki online są tylko w formacie
local var=value
Uczę się skryptów bash i znalazłem to na moim / usr / share / bash-complete, wiersz 305:
local cword words=()
Co to robi? Wszystkie samouczki online są tylko w formacie
local var=value
Odpowiedzi:
Chociaż podoba mi się odpowiedź udzielona przez jordanm , myślę, że równie ważne jest pokazanie mniej doświadczonym Linuxużytkownikom, jak samodzielnie radzić sobie z takimi pytaniami.
Sugerowany sposób jest szybszy i bardziej wszechstronny niż szukanie odpowiedzi na losowych stronach wyświetlanych na stronie wyników wyszukiwania Google.
Po pierwsze, wszystkie polecenia, które można uruchomić Bashbez wpisywania wyraźnej ścieżki do niego, takie jak, ./commandmożna podzielić na dwie kategorie: Bash shell builtinsi external commands. Bash shell builtinspochodzą z Bashi są jego częścią, a external commandsnie są częścią Bash. Jest to ważne, ponieważ Bash shell builtinssą dokumentowane wewnątrz, man basha ich dokumentację można również wywoływać za pomocą helppolecenia, podczas gdy external commandszwykle są one dokumentowane samodzielnie manpageslub zabierają króla -h, --helpflagi. Aby sprawdzić, czy polecenie jest Bash shell builtinalbo external command:
$ type local
local is a shell builtin
Wyświetli się how command would be interpreted if used as a command name(z help type). Tutaj widzimy, że localjest to shell builtin. Zobaczmy inny przykład:
$ type vim
vim is /usr/bin/vim
Tutaj widzimy, że vimnie jest shell builtinto zewnętrzne polecenie znajdujące się w /usr/bin/vim. Czasami jednak to samo polecenie może być zainstalowane zarówno jako, jak external commandi shell builtinjednocześnie. Dodaj -ado typelisty wszystkich możliwości, na przykład:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Tutaj widzimy, że echojest to zarówno a, jak shell builtini an external command. Jednakże, jeśli właśnie wpisałeś echoi nacisnąłeś Returna shell builtin, zostanie wywołany, ponieważ pojawia się jako pierwszy na tej liście. Pamiętaj, że wszystkie te wersje echonie muszą być takie same. Na przykład w moim systemie /usr/bin/echotrwa --helpflaga, a builtinnie.
Ok, teraz kiedy wiemy, że localjest to wbudowana powłoka, dowiedzmy się, jak to działa:
$ help local
local: local [option] name[=value] ...
Define local variables.
Create a local variable called NAME, and give it VALUE. OPTION can
be any option accepted by `declare'.
Local variables can only be used within a function; they are visible
only to the function where they are defined and its children.
Exit Status:
Returns success unless an invalid option is supplied, an error occurs,
or the shell is not executing a function.
Należy zwrócić uwagę na pierwszą linię: name[=value]. Wszystko pomiędzy [i ]jest opcjonalne . Jest to powszechna konwencja stosowana w wielu manpagesdokumentach na *nixcałym świecie. Biorąc to pod uwagę, polecenie, o które pytałeś w swoim pytaniu, jest całkowicie legalne. Z kolei ...znak oznacza, że można powtórzyć poprzedni argument. Możesz także przeczytać o tej konwencji w niektórych wersjach man man:
The following conventions apply to the SYNOPSIS section and can be used
as a guide in other sections.
bold text type exactly as shown.
italic text replace with appropriate argument.
[-abc] any or all arguments within [ ] are optional.
-a|-b options delimited by | cannot be used together.
argument ... argument is repeatable.
[expression] ... entire expression within [ ] is repeatable.
Tak więc na koniec dnia mam nadzieję, że teraz łatwiej będzie ci zrozumieć, jak działają różne polecenia Linux.
local?
man bash. Na miejscu wpisz, /Arrays$aby przejść do sekcji tablic. (Następujące $po Arraysto, aby zapobiec przewijaniu w tekście odwołań do sekcji.) Stamtąd możesz wpisać, faby przejść do przodu lub bdo tyłu. Wpisz, qaby wyjść ze strony podręcznika po zakończeniu.
helpbez args będzie lista wszystkich poleceń wbudowanych bash, jeśli jesteś ciekaw, aby zobaczyć więcej.
localpo prostu deklaruje, że zmienna ma zasięg tylko w aktualnie zdefiniowanej funkcji, tak że główne środowisko wykonawcze nie może „zobaczyć” wartości. Nie można używać localpoza funkcją. Przykład
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
Dane wyjściowe: zmienna nielokalna
Więc $onlyherenie było widoczne poza zakresem funkcji.
var=(), ale przypuszczam, że jest to trochę dużo do zrobienia, nawet nie znając nazwy tego, czego szukasz . ;)