¿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
typesetydeclare? - 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.typesetse considera obsoleto?