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
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
Réponses:
Bien que j'aime la réponse donnée par jordanm, je pense qu'il est tout aussi important de montrer aux Linuxutilisateurs 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 Bashsans taper un chemin explicite vers celui-ci, comme celles qui ./commandpeuvent être divisées en deux catégories: Bash shell builtinset external commands. Bash shell builtinssont installés avec Bashet en font partie alors qu'ils external commandsn'en font pas partie Bash. Ceci est important car ils Bash shell builtinssont documentés à l'intérieur man bashet leur documentation peut également être invoquée avec une helpcommande alors qu'ils external commandssont généralement documentés par eux-mêmes manpagesou prennent un roi de -h, --helpdrapeau. Pour vérifier si une commande est un Bash shell builtinou 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 localc'est un shell builtin. Voyons un autre exemple:
$ type vim
vim is /usr/bin/vim
Ici, nous pouvons voir que ce vimn'est pas une shell builtinmais 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 commandet être shell builtinen même temps. Ajouter -aà la typeliste 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 echoc'est à la fois un shell builtinet un external command. Cependant, si vous venez de taper echoet d'appuyer sur, Returnun shell builtinsera appelé car il apparaît en premier sur cette liste. Notez que toutes ces versions de echon'ont pas besoin d'être identiques. Par exemple, sur mon système /usr/bin/echoprend le --helpdrapeau tandis que builtinnon.
Ok, maintenant quand nous savons que localc'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 manpagesformes de documentation dans le *nixmonde. 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.
local ?
man bash. Une fois là-dedans, tapez /Arrays$pour passer à la section sur les tableaux. (La fin $après Arraysest pour éviter de parcourir les références textuelles à la section.) De là, vous pouvez taper fpour avancer d'une page ou bpour revenir en arrière. Tapez qpour quitter la page de manuel lorsque vous avez terminé.
helpsans arguments affichera la liste de toutes les commandes bash si vous êtes curieux d'en voir plus.
localdé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 en localdehors d'une fonction. Exemple
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
Sortie: variable non locale
Donc, $onlyheren'était pas visible en dehors de la portée de la fonction.
var=(), mais je suppose que c'est un peu difficile à comprendre sans même savoir le nom de ce que vous cherchez . ;)