In questo articolo, esamineremo l'uso della dichiarazione comando in bash e come usarlo. Una dichiarazione è un comando integrato di bash che fornisce un comportamento tipo per i tuoi script.
Se hai precedenti esperienze in qualsiasi linguaggio di programmazione come Java , C potresti sapere cos'è un tipo di sistema. Purtroppo, bash non ha un sistema di tipi forte. Con dichiara comando, puoi ottenere un comportamento simile al tipo e puoi impostare attributi per le tue variabili.
$ type -a declare declare is a shell builtin
Esamineremo alcune delle utili funzioni dichiara offerte. Un buon punto di partenza per conoscere la dichiarazione è tramite il comando di aiuto o la pagina di manuale di bash.
$ help declare declare: declare [-aAfFgiIlnrtux] [-p] [name[=value] ...] Set variable values and attributes. Declare variables and give them attributes. If no NAMEs are given, display the attributes and values of all variables. Options: -f restrict action or display to function names and definitions -F restrict the display to function names only (plus line number and source file when debugging) -g create global variables when used in a shell function; otherwise ignored -I if creating a local variable, inherit the attributes and value of a variable with the same name at a previous scope -p display the attributes and value of each NAME ...
Come dichiarare il tipo di numeri interi
Per dichiarare una variabile di tipo intero usa -i
bandiera. Se guardi l'esempio seguente puoi vedere che l'età variabile è dichiarata come un tipo intero. Quando provi ad assegnare valori di un altro tipo (stringhe ) potresti aspettarti che restituisca un errore che dice "Tipo non corretto ” ma qui invece di lanciare la variabile di errore verrà assegnata come zero (0 ). Sì, questo è un comportamento strano e non quello che ci si aspetta.
$ declare -i num=10 $ echo $num $ num=string # Reassigning Interger type with string $ echo $num ⇒ Zero will be the output

Come dichiarare variabili di sola lettura
Sola lettura – Questo è un termine di programmazione che significa che a una variabile viene assegnato un valore e non può mai essere modificata né dal programmatore né dalla macchina. Rimane lo stesso per tutto il ciclo di vita del programma.
Per rendere costante la tua variabile (sola lettura ) usa il -r
bandiera.
$ declare -r num=10 $ num=11 -bash: no: readonly variable

Un metodo alternativo per rendere una variabile di sola lettura consiste nell'utilizzare sola lettura parola chiave.
$ readonly os=ubuntu $ os=arch -bash: os: readonly variable

Conversione minuscole e maiuscole in Linux
Quando assegni una variabile a bash puoi convertirla da minuscolo a maiuscolo e viceversa usando il -l
(minuscolo) e -u
flag (maiuscolo).
$ declare -l name="LINUX" $ declare -u name1="linux" $ echo $name $name1

Come dichiarare un array indicizzato/associativo
Bash supporta due tipi di array. Indicizzato array e associativi Vettore. Per dichiarare gli array usa -a
(Matrice indicizzata) e -A
flag (array associativo). Puoi creare un array indicizzato senza utilizzare dichiara comando ma per creare un array associativo devi usare il comando dichiara con -A
bandiera.
$ declare -a os_name=(Ubuntu Mint Kubuntu lubuntu Debian) $ echo ${os_name[@]} $ declare -A os_family $ os_family["Redhat"]="Fedora" $ os_family["Arch"]="Manjaro" $ os_family["Debian"]="Ubuntu" $ echo ${os_family[@]}

Esportazione di variabili in subshell
Se hai una certa esperienza con bash, potresti o vedere persone che usano il comando export per esportare variabili dichiarate in subshell nei loro script o sessioni di shell. Possiamo farlo usando dichiara comando anche.
Per esportare, dovresti usare -x
flag e +x
flag rimuoverà l'attributo dall'esportazione.
$ declare -x name=ShellTips $ sh -c “echo $name”

Verifica se gli attributi sono definiti o meno
Possiamo verificare se è un attributo (variabile ) è definito o meno utilizzando il -p
bandiera.
# Defining a variable $ a=10;b=20;c=30 # Check if a variable is defined or not $ declare -p a # single variable check declare -- a="10" $ declare -p a b c # check multiple variables declare -- a="10" declare -- b="20" declare -- c="30"
Vedrai due trattini --
dopo aver dichiarato la parola chiave. Questo serve per visualizzare il tipo di variabile come declar -a (array), dichiara -n (riferimento nome). Se non viene dichiarato nulla, visualizzerà semplicemente --
.
$ declare -a Iarray $ declare -A arrray $ declare -p Iarray Asarray declare -a Iarray declare -A Asarray
Se provi a trovare una variabile non dichiarata, verrà generato un errore di follow.
$ declare -p Iarray1 -bash: declare: Iarray1: not found

Come verificare la definizione della funzione
Puoi usare il -F
e -f
flag per vedere se la funzione è dichiarata e la definizione della funzione. Sto creando una semplice funzione Hello World.
$ function hello_world(){ echo "Linux Geeks"; } $ declare -F
Per ottenere la definizione della funzione puoi usare il -f
bandiera. Se non viene passato alcun nome di funzione, verranno stampate tutte le funzioni caricate e potrai ottenere la definizione della tua funzione dall'elenco.
$ declare -f hello_world $ declare -f

Questo è tutto per questo articolo. Lo scopriremo molto presto con un altro articolo interessante.