variable una script resultado pasar parametros guardar funciones entorno cómo crear con comando bash shell variables scope declare

una - variables de entorno linux bash



Diferencias entre declarar, tipografiar y variable local en Bash (3)

En el manual Bash en la sección 4.2 Bash Builtin Commands , indica:

''tipografiado''
composición tipográfica [-afFrxi] [-p] [NAME [= VALUE] ...]
El comando ''typeset'' se suministra para compatibilidad con el shell Korn; sin embargo, ha quedado en desuso en favor del comando incorporado ''declarar''.

Al escribir variables en Bash, ¿cuál es la diferencia entre declare y typeset ? Cuando se usa dentro de una función: ¿cuál es la diferencia entre declare y typeset y local ?

La única diferencia que he encontrado es que el tipo de letra es portátil para los scripts ksh. Aparte de eso, ¿hay alguna razón por la cual uno debe ser preferido sobre el otro?

ACTUALIZACIÓN: agregado local a la pregunta.


En lo que se refiere a bash, no, no hay diferencia. De hecho, la página de manual hace que compartan la misma definición

declare [-aAFFilrtux] [-p] [nombre [= valor] ...]
typeset [-aAFFilrtux] [-p] [name [= value] ...]
Declara variables y / o dales atributos. Si no se dan nombres, entonces se muestran los valores de las variables. La opción -p mostrará los atributos y valores de cada nombre ...

También encontré este pequeño tidbit que corrobora mi reclamo además de la portabilidad ksh que mencionaste.

Los builtins declare o typeset, que son sinónimos exactos , permiten modificar las propiedades de las variables. Esta es una forma muy débil de tipado [1] disponible en ciertos lenguajes de programación. El comando declare es específico de la versión 2 o posterior de Bash. El comando typeset también funciona en scripts ksh.


  • Diferencia entre typeset y declare :

El primero es más portátil (por ejemplo, ksh), mientras que el último es más preferible cuando la portabilidad no es una preocupación.

  • Diferencia entre declare (o typeset ) y local cuando se usa dentro de una función:

Lo primero implica lo último, pero más poderoso. Por ejemplo, declare -ix hace que x tenga el atributo integer , declare -rx hace x solo, etc.