En bash scripting:
creamos variable con solo nombrarla:
abc=ok
o podemos usar declare
declare abc=ok
¿cual es la diferencia?
¿Y por qué bash hace tantas formas de crear una variable?
bash
shell-script
variable
primavera amorosa
fuente
fuente

declarehace que los NAME sean locales, como con ellocalcomando. La-gopción suprime este comportamiento. Verhelp declare.declarepermite crear matrices asociativas, enteros y variables de solo lectura. Además, expande sus argumentos, por lo que cosas comodeclare $name=1son posibles.Respuestas:
De
help -m declare:Por lo tanto,
declarese utiliza para establecer valores y atributos variables .Permítanme mostrar el uso de dos atributos con un ejemplo muy simple:
¡Del ejemplo anterior, creo que deberías entender el uso de la
declarevariable sobre la variable normal! Este tipo dedeclareacción es útil en funciones, bucles con secuencias de comandos.Visite también Variables de escritura: declarar o componer
fuente
abc=okasigna un valor a la variableabc.declare abcdeclara una variable llamadaabc. Los dos se pueden combinar comodeclare abc=ok.En bash, como otros shells, las variables de cadena y matriz no necesitan ser declaradas, por
declarelo que no es necesario a menos que desee pasar opciones, por ejemplo,declare -A abcpara hacerabcuna matriz asociativa odeclare -rpara hacer una variable de solo lectura. Sin embargo, dentro de una función,declarehace una diferencia: hace que la variable sea local a la función, lo que significa que el valor de la variable fuera de la función (si existe) se conserva. (A menos que utilicedeclare -g, lo que hace que la variable no sea local; esto es útil cuando se combina con otras opciones, por ejemplo,declare -gApara crear una matriz asociativa global en una función). Ejemplo:Salida:
Otra cosa que puedes hacer con el
declareincorporado esEl
declareincorporado es exclusivo de bash. Está fuertemente inspirado y muy cerca de latypesetconstrucción de ksh , y bash proporcionatypesetcomo sinónimo dedeclarecompatibilidad. (No sé por qué bash no solo lo llamótypeset). Hay una tercera sinonimo,local. También hayexport, que es lo mismo quedeclare -x, de nuevo por compatibilidad (con cada shell de estilo Bourne).fuente
export,localydeclarees el más compatible con otros proyectiles?exportexiste en todas las variantes desh.localexiste solo en bash y zsh,declaresolo en bash.typesetexiste en ksh, bash y zsh.