¿Alguien puede explicar la diferencia entre declare y typeset con ejemplos de la vida real?
Responder
En bash
, typeset
y declare
son exactamente iguales. La única diferencia es que typeset
se considera obsoleto.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".
La página de manual incluso los enumera al mismo tiempo:
declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.
typeset
es portátil para algunos otros shells, por ejemplo, ksh93
. Si su objetivo es la portabilidad cross-shell, use typeset
(y asegúrese de que la forma en que lo llama sea portátil). Si no le importa esa portabilidad, use declare
.
Comentarios
Responder
Conozco un caso en el que declare
es útil para evitar el mal eval
: direccionamiento indirecto variable :
$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value
Comentarios
- Este es un buen comentario, pero ¿cómo responde eso a la pregunta? ab out
typeset
ydeclare
? - Esto ya está bien respondido por Chris Down, mi respuesta es solo un caso en el que es ' s útil
- Quizás no estaba ' t claro. Los comentarios deben ser comentarios y las respuestas deben ser respuestas. Esto es un comentario, no una respuesta.
- Mi fragmento no ' t claro en un comentario
- pero aún puede asignar variables con typeset … simplemente reemplace declare con typeset y obtendrá el mismo resultado.
help typeset
, no enman typeset
.typeset
se considera obsoleto?