Estoy aprendiendo scripts de bash y encontré esto en mi / usr / share / bash-complete, línea 305:
local cword words=()
¿Qué hace? Todos los tutoriales en línea son solo en el formato
local var=value
fuente
Estoy aprendiendo scripts de bash y encontré esto en mi / usr / share / bash-complete, línea 305:
local cword words=()
¿Qué hace? Todos los tutoriales en línea son solo en el formato
local var=value
Aunque me gusta la respuesta dada por Jordan , creo que es igualmente importante mostrar a los Linuxusuarios menos experimentados cómo hacer frente a esas preguntas por sí mismos.
La forma sugerida es más rápida y versátil que buscar respuestas en páginas aleatorias que aparecen en la página de resultados de búsqueda de Google.
Primero, todos los comandos que se pueden ejecutar Bashsin escribir una ruta explícita, como ./commandse pueden dividir en dos categorías: Bash shell builtinsy external commands. Bash shell builtinsvienen instalados Bashy son parte de él mientras que external commandsno lo son Bash. Esto es importante porque Bash shell builtinsestán documentados en man bashsu interior y su documentación también se puede invocar con un helpcomando, mientras que external commandsgeneralmente se documentan por su cuenta manpageso toman algún tipo de -h, --helpbandera. Para verificar si un comando es un Bash shell builtino un external command:
$ type local
local is a shell builtin
Se mostrará how command would be interpreted if used as a command name(desde help type). Aquí podemos ver que locales un shell builtin. Veamos otro ejemplo:
$ type vim
vim is /usr/bin/vim
Aquí podemos ver que vimno es un shell builtinsino un comando externo ubicado en /usr/bin/vim. Sin embargo, a veces se puede instalar el mismo comando como external commandy shell builtinal mismo tiempo como a. Agregar -aa la typelista de todas las posibilidades, por ejemplo:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Aquí podemos ver que echoes tanto a shell builtincomo a external command. Sin embargo, si usted acaba de escribir echoy pulsó Returnuna shell builtinque se llamaría ya que aparece por primera vez en esta lista. Tenga en cuenta que todas estas versiones de echono necesitan ser las mismas. Por ejemplo, en mi sistema /usr/bin/echotoma --helpbandera mientras builtinque a no.
Ok, ahora que sabemos que locales un shell incorporado, veamos cómo funciona:
$ 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.
Nota la primera línea: name[=value]. Todo entre [y ]es opcional . Es una convención común utilizada en muchos manpagesy en forma de documentación en el *nixmundo. Dicho esto, el comando que preguntaste en tu pregunta es perfectamente legal. A su vez, el ...carácter significa que el argumento anterior puede repetirse. También puede leer sobre esta convención en algunas versiones 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.
Entonces, al final del día, espero que ahora sea más fácil entender cómo funcionan los diferentes comandos Linux.
var=(), pero supongo que eso es un poco difícil de entender sin siquiera saber el nombre de lo que estás buscando. . ;)localtambién son compatibles ?man bash. Una vez allí, escriba/Arrays$para saltar a la sección de matrices. (El arrastre$despuésArrayses prevenir ciclismo a través de las referencias en el texto a la sección.) Desde allí se puede escribirfpara ir a la página siguiente obpara retroceder. Escribaqpara salir de la página del manual cuando haya terminado.helpsin args enumerará todos los componentes de bash si tiene curiosidad por ver más.La
localpalabra clave puede tomar múltiples variables. Proporcionar un valor a la variable es opcional. Su ejemplo declara dos variables,cwordywords. A lawordsvariable se le asigna una matriz vacía.fuente
localsimplemente declara que una variable tiene alcance solo en la función definida actualmente, de modo que el entorno de ejecución principal no puede "ver" el valor. No se puede usarlocalfuera de una función. EjemploSalida: variable no local
Entonces
$onlyhereno era visible fuera del alcance de la función.fuente