¿Cuál es la diferencia entre declare y typeset

¿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

  • ¿puede por favor proporcione un ejemplo de dónde y por qué este uso en bash script
  • … como dije, son exactamente iguales. No ' entiendo cómo puede diferenciarlos si lo son.
  • Buena. Tenga en cuenta que " obsolete " solo aparece en help typeset, no en man typeset.
  • @ChrisDown, no ' ¿No sabe exactamente por qué typeset se considera obsoleto?

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 y declare?
  • 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *