Ich lerne Bash-Scripting und habe dies in meiner / usr / share / bash-Vervollständigung, Zeile 305, gefunden:
local cword words=()
Was tut es? Alle Online-Tutorials haben nur das Format
local var=value
Ich lerne Bash-Scripting und habe dies in meiner / usr / share / bash-Vervollständigung, Zeile 305, gefunden:
local cword words=()
Was tut es? Alle Online-Tutorials haben nur das Format
local var=value
Antworten:
Obwohl ich eine Antwort von Jordan mag, denke ich, dass es genauso wichtig ist, weniger erfahrenen Linux
Benutzern zu zeigen , wie sie mit solchen Fragen selbst umgehen können.
Der vorgeschlagene Weg ist schneller und vielseitiger als das Suchen nach Antworten auf zufälligen Seiten, die auf der Google-Suchergebnisseite angezeigt werden.
Erstens können alle Befehle, die Bash
ohne Eingabe eines expliziten Pfads eingegeben werden ./command
können, in zwei Kategorien unterteilt werden: Bash shell builtins
und external commands
. Bash shell builtins
kommen installiert mit Bash
und sind teil davon, während external commands
nicht teil davon sind Bash
. Dies ist wichtig, da Bash shell builtins
die Dokumentation im Inneren dokumentiert ist man bash
und ihre Dokumentation auch mit einem help
Befehl aufgerufen werden kann, während sie external commands
in der Regel für sich selbst dokumentiert ist manpages
oder einen König der -h, --help
Fahnen übernimmt . So überprüfen Sie, ob ein Befehl ein Bash shell builtin
oder ein ist external command
:
$ type local
local is a shell builtin
Es wird how command would be interpreted if used as a command name
(von help type
) angezeigt . Hier können wir sehen, dass local
a shell builtin
. Sehen wir uns ein weiteres Beispiel an:
$ type vim
vim is /usr/bin/vim
Hier sehen wir, dass vim
es sich nicht um einen, shell builtin
sondern um einen externen Befehl handelt /usr/bin/vim
. Manchmal kann jedoch derselbe Befehl gleichzeitig als external command
und als installiert shell builtin
werden. Hinzufügen -a
, type
um alle Möglichkeiten aufzulisten, zum Beispiel:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Hier können wir sehen, dass echo
sowohl ein shell builtin
als auch ein external command
. Allerdings, wenn Sie gerade eingegeben echo
und drückte Returnein shell builtin
hätte genannt werden , da sie zuerst in dieser Liste erscheint. Beachten Sie, dass alle diese Versionen von echo
nicht identisch sein müssen. Zum Beispiel auf meinem System /usr/bin/echo
nimmt--help
Flagge, während builtin
nicht.
Ok, wenn wir jetzt wissen, dass local
es sich um eine eingebaute Shell handelt, wollen wir herausfinden, wie es funktioniert:
$ 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.
Beachten Sie die erste Zeile: name[=value]
. Alles zwischen [
und ]
ist optional . Es ist eine weit verbreitete Konvention, die in vielen manpages
Dokumentationsformen der *nix
Welt verwendet wird. Davon abgesehen ist der Befehl, nach dem Sie in Ihrer Frage gefragt haben, vollkommen legal. ...
Zeichen bedeutet wiederum, dass das vorherige Argument wiederholt werden kann. Sie können über diese Konvention auch in einigen Versionen von lesen 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.
Letztendlich hoffe ich, dass Sie jetzt leichter verstehen können, wie die verschiedenen Befehle Linux
funktionieren.
local
auch Nicht-Bash-Shells ?
man bash
. Geben Sie dort ein, /Arrays$
um zum Abschnitt auf Arrays zu springen. (Die hintere $
nach Arrays
ist mit dem Abschnitt Radfahren durch in-Textverweise zu verhindern.) Von dort können Sie eingeben können f
sie auf eine Seite gehen oder b
rückwärts zu gehen. Geben Sie q
Folgendes ein, um die Manpage zu schließen, wenn Sie fertig sind.
help
Wenn Sie ohne Argumente laufen, werden alle Bash-Buildins aufgelistet, wenn Sie mehr sehen möchten.
local
Deklariert eine Variable einfach so, dass sie nur in der aktuell definierten Funktion Gültigkeitsbereich hat, sodass die ausführende Hauptumgebung den Wert nicht "sehen" kann. Sie können nicht local
außerhalb einer Funktion verwenden. Beispiel
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
Ausgabe: Nicht lokale Variable
War $onlyhere
also außerhalb des Funktionsumfangs nicht sichtbar.
var=()
herausfinden, wie ein Anfänger die Array-Zuweisung ermittelt hat, nur anhand des Codes . Aber ich nehme an, das ist ein bisschen umständlich, ohne den Namen zu kennen, nach dem Sie suchen . ;)