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
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
edeclare
? - 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.
help typeset
, non inman typeset
.typeset
è considerato obsoleto?