Qual è la differenza tra declare e typeset

Qualcuno sa spiegare la differenza tra declare e typeset con esempi di vita reale.

Rispondi

In bash, typeset e declare sono esattamente gli stessi. Lunica differenza è che typeset è considerato obsoleto.

 typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".  

La pagina man li elenca anche nello stesso momento:

 declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.  

typeset è portabile su altre shell, ad esempio ksh93. Se stai mirando alla portabilità cross-shell, usa typeset (e assicurati che il modo in cui lo chiami sia portabile). Se non ti interessa tale portabilità, utilizza declare.

Commenti

  • puoi per favore fornire qualche esempio di dove e perché questo uso nello script bash
  • … come ho detto, sono esattamente gli stessi. Non ' non capisco come può differenziarli se lo sono.
  • Buono. Tieni presente che " obsoleto " appare solo in help typeset, non in man typeset.
  • @ChrisDown, non dovresti ' Non sai perché, esattamente, typeset è considerato obsoleto?

Risposta

Conosco un caso in cui declare è utile per evitare il malvagio eval: riferimento indiretto variabile :

$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value 

Commenti

  • Questo è un bel commento, ma come risponde alla domanda che è ab out typeset e declare?
  • Questo è già stato ben risposto da Chris Down, la mia risposta è solo un caso in cui ' è utile
  • Forse ' non era chiaro. I commenti dovrebbero essere commenti e le risposte dovrebbero essere risposte. Questo è un commento, non una risposta.
  • Il mio snippet non ' t chiaro in un commento
  • ma puoi comunque assegnare variabili con typeset … basta sostituire declare con typeset e otterrai comunque lo stesso risultato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *