Bash betiğini öğreniyorum ve bunu / usr / share / bash-bitiminde, 305 satırında buldum:
local cword words=()
Bu ne işe yarıyor? Tüm öğreticiler çevrimiçi formatta
local var=value
Bash betiğini öğreniyorum ve bunu / usr / share / bash-bitiminde, 305 satırında buldum:
local cword words=()
Bu ne işe yarıyor? Tüm öğreticiler çevrimiçi formatta
local var=value
Yanıtlar:
Jordanm tarafından verilen cevabı sevmeme rağmen, daha az deneyimli Linuxkullanıcılara bu tür sorularla nasıl başa çıkacaklarını göstermek de eşit derecede önemli .
Önerilen yöntem, Google arama sonuçları sayfasında görüntülenen rasgele sayfalardaki yanıtları aramaktan daha hızlı ve çok yönlüdür.
Öncelikle, Bashaçık bir yol yazmadan çalıştırılabilen tüm komutlar, ./commandiki kategoriye ayrılabilir: Bash shell builtinsve external commands. Bash shell builtinsile yüklenen gelip Bashve süre onun bir parçası olan external commandsbir parçası değildir Bash. Bu önemlidir, çünkü Bash shell builtinsiçeride belgelenir man bashve genellikle kendi başlarına belgelendirilirken veya bir miktar bayrak kralı helpalırken external commandsbelgeleri de komutla çağrılabilir . Bir komutun a veya an olup olmadığını kontrol etmek için :manpages-h, --helpBash shell builtinexternal command
$ type local
local is a shell builtin
how command would be interpreted if used as a command name(Dan help type) gösterecektir . Burada görebilirsiniz localbir olduğunu shell builtin. Başka bir örnek görelim:
$ type vim
vim is /usr/bin/vim
Burada bunun içinde bulunan harici bir komut vimolmadığını görebiliriz . Ancak, bazen aynı komut bir şekilde hem yüklenmeden ve olmak aynı zamanda. Tüm olasılıkları listelemek için ekleyin , örneğin:shell builtin/usr/bin/vimexternal commandshell builtin-atype
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Burada bunun echohem a hem de shell builtinan olduğunu görebiliriz external command. Sadece yazmış Ancak, echove preslenmiş Returnbir shell builtinbu listede ilk göründüğü için adlandırılırdı. Tüm bu sürümlerin echoaynı olması gerekmediğine dikkat edin. Örneğin, benim sistemde /usr/bin/echoalır --helpbir süre bayrağı builtinyok.
Tamam, şimdi localbunun bir kabuk yerleşik olduğunu bildiğimizde, nasıl çalıştığını bulalım:
$ 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.
İlk satırı Not: name[=value]. Arasındaki her şey [ve ]bir isteğe bağlı . Dünyada birçok manpagesve genel dokümantasyonda kullanılan yaygın bir kongredir *nix. Olduğu söyleniyor, sorunuzda sorduğunuz komut tamamen yasal. Sırayla, ...karakter önceki argümanın tekrarlanabileceği anlamına gelir. Bu kongre hakkında ayrıca bazı versiyonlarda da okuyabilirsiniz 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.
Bu nedenle, günün sonunda, umarım Linuxçalışmadaki farklı komutları anlamak için daha kolay bir zamanınız olur .
localmu?
man bash. İçeri girdikten sonra /Arrays$, dizilerdeki bölüme atlamak için yazın. (Bundan $sonraki Arraysadım, bölüm içindeki metin içi referanslar arasında gezinmeyi önlemek içindir.) Oradan fbir sayfa ileri gitmek veya bgeriye gitmek için yazabilirsiniz . Tip qİşiniz bittiğinde adam sayfasını çıkmak için.
helpdaha fazla görmek istemiyorsanız, hiçbir argüman olmadan koşmak tüm bash yerleşiklerini listeler.
localsadece şu anda tanımlanmış olan fonksiyonda kapsamı olan bir değişken bildirir, böylece ana çalıştırma ortamı değeri "göremez". localBir işlev dışında kullanamazsınız . Örnek
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
Çıktı: Yerel olmayan değişken
Böylece $onlyhere, fonksiyonun kapsamı dışında görünmüyordu.
var=(), ama sanırım aradığınızın ismini bile bilmeden anlaşılması biraz fazla. . ;)