J'apprends le script bash et je l'ai trouvé sur mon / usr / share / bash-complètement, ligne 305:
local cword words=()
Qu'est ce que ça fait? Tous les tutoriels en ligne sont juste au format
local var=value
la source
J'apprends le script bash et je l'ai trouvé sur mon / usr / share / bash-complètement, ligne 305:
local cword words=()
Qu'est ce que ça fait? Tous les tutoriels en ligne sont juste au format
local var=value
Bien que j'aime la réponse donnée par jordanm, je pense qu'il est tout aussi important de montrer aux Linux
utilisateurs moins expérimentés comment faire face à ces questions par eux-mêmes.
La méthode suggérée est plus rapide et plus polyvalente que la recherche de réponses sur des pages aléatoires apparaissant sur la page de résultats de recherche Google.
Tout d'abord, toutes les commandes qui peuvent être exécutées Bash
sans taper un chemin explicite vers celui-ci, comme celles qui ./command
peuvent être divisées en deux catégories: Bash shell builtins
et external commands
. Bash shell builtins
sont installés avec Bash
et en font partie alors qu'ils external commands
n'en font pas partie Bash
. Ceci est important car ils Bash shell builtins
sont documentés à l'intérieur man bash
et leur documentation peut également être invoquée avec une help
commande alors qu'ils external commands
sont généralement documentés par eux-mêmes manpages
ou prennent un roi de -h, --help
drapeau. Pour vérifier si une commande est un Bash shell builtin
ou un external command
:
$ type local
local is a shell builtin
Il affichera how command would be interpreted if used as a command name
(à partir de help type
). Ici, nous pouvons voir que local
c'est un shell builtin
. Voyons un autre exemple:
$ type vim
vim is /usr/bin/vim
Ici, nous pouvons voir que ce vim
n'est pas une shell builtin
mais une commande externe située dans /usr/bin/vim
. Cependant, parfois la même commande peut être installée à la fois en tant que an external command
et être shell builtin
en même temps. Ajouter -a
à la type
liste toutes les possibilités, par exemple:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Ici, nous pouvons voir que echo
c'est à la fois un shell builtin
et un external command
. Cependant, si vous venez de taper echo
et d'appuyer sur, Returnun shell builtin
sera appelé car il apparaît en premier sur cette liste. Notez que toutes ces versions de echo
n'ont pas besoin d'être identiques. Par exemple, sur mon système /usr/bin/echo
prend le --help
drapeau tandis que builtin
non.
Ok, maintenant quand nous savons que local
c'est un shell intégré, découvrons comment cela fonctionne:
$ 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.
Notez la première ligne: name[=value]
. Tout entre [
et ]
est facultatif . C'est une convention commune utilisée dans de nombreuses manpages
formes de documentation dans le *nix
monde. Cela étant dit, l'ordre que vous avez demandé dans votre question est parfaitement légal. À son tour, le ...
caractère signifie que l'argument précédent peut être répété. Vous pouvez également lire sur cette convention dans certaines versions de 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.
Donc, à la fin de la journée, j'espère que vous aurez maintenant plus de facilité à comprendre le fonctionnement des différentes commandes Linux
.
var=()
, mais je suppose que c'est un peu difficile à comprendre sans même savoir le nom de ce que vous cherchez . ;)local
?man bash
. Une fois là-dedans, tapez/Arrays$
pour passer à la section sur les tableaux. (La fin$
aprèsArrays
est pour éviter de parcourir les références textuelles à la section.) De là, vous pouvez taperf
pour avancer d'une page oub
pour revenir en arrière. Tapezq
pour quitter la page de manuel lorsque vous avez terminé.help
sans arguments affichera la liste de toutes les commandes bash si vous êtes curieux d'en voir plus.Le
local
mot-clé peut prendre plusieurs variables. Fournir une valeur à la variable est facultatif. Votre exemple déclare deux variablescword
etwords
. Lawords
variable se voit attribuer un tableau vide.la source
local
déclare simplement qu'une variable n'a de portée que dans la fonction actuellement définie, de sorte que l'environnement d'exécution principal ne peut pas "voir" la valeur. Vous ne pouvez pas utiliser enlocal
dehors d'une fonction. ExempleSortie: variable non locale
Donc,
$onlyhere
n'était pas visible en dehors de la portée de la fonction.la source