GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Scripting:variabili spiegate con esempi

Le variabili sono concetti molto importanti in qualsiasi linguaggio di programmazione con cui lavori. Pensa a una variabile come a un contenitore in memoria che memorizza dati di un certo tipo. Lo scopo principale delle variabili è memorizzare un valore e accedervi in ​​seguito per l'elaborazione. Se sei qualcuno di altri linguaggi di programmazione come Java, C, C++, potresti trovare differenze nel modo in cui la definizione della variabile differisce poiché Bash non ha un sistema di tipi forte.

Bash gestisce due tipi di variabili. Sono:

  • Variabili definite dall'utente :variabili che crei e manipoli.
  • Variabili ambientali :Creato e archiviato da bash o applicazioni per lo scopo del sistema/applicazione.

Inizieremo a lavorare con variabili definite dall'utente seguite da variabili ambientali.

1. Come creare una variabile

La variabile dovrebbe avere un identificatore (nome della variabile) e un valore assegnato ad essa come mostrato di seguito. L'identificatore (nome della variabile) è "site_name" e il valore assegnato è "OSTechnix" .

$ site_name="OSTechnix"
$ this_year=2021
$ value_of_pi=3.14

Ci sono alcune cose da ricordare durante la creazione di variabili.

  • Non dovrebbe esserci spazio tra il nome e il valore della variabile.
  • Cerca di evitare di utilizzare nomi già utilizzati come parole chiave bash riservate, nomi di variabili e funzioni che creeranno conflitti.
  • Crea nomi di variabili descrittivi e i nomi di variabili possono avere lettere, numeri, caratteri di sottolineatura e cifre.

La convenzione di denominazione delle variabili è discutibile poiché ho visto persone diverse utilizzare convenzioni diverse per creare nomi di variabili. Alcuni creano variabili definite dall'utente usando il caso del serpente come ho creato nell'esempio precedente e altri creano nomi di variabili con maiuscolo completo. Non ci sono regole rigide in bash ma sii coerente con qualsiasi metodo tu scelga. Preferisco nominare le mie variabili in maiuscolo e le costanti in maiuscolo.

2. Come accedere alle variabili Bash

Esistono due modi per accedere a una variabile. Uno sta usando "$ symbol" seguito dal nome della variabile e il secondo metodo utilizza il "$ symbol" seguito da parentesi graffe e nome della variabile all'interno delle parentesi graffe.

$ echo $site_name
OSTechnix
$ echo ${this_year}
2021
$ echo ${this_year} $value_of_pi
2021 3.14

3. Riassegna valore a una variabile

Bash non ha un sistema di tipi forti, il che significa che non ci sono regole rigide nella definizione del tipo di dati durante la creazione delle variabili. La variabile Bash memorizza tutti i valori come stringhe e sa in modo intelligente quando lavoriamo con il calcolo numerico.

Puoi riassegnare qualsiasi valore a una variabile già creata.

$ os_name="PoP_OS!"
$ echo ${os_name}
PoP_OS!
$ os_name="Linux Mint"
$ echo ${os_name}
Linux Mint

4. Dichiarazione del tipo di dati per una variabile

Puoi usare la declare comando per creare una variabile con un tipo di dati specifico. Accedi alla sezione della guida di declare comando per saperne di più.

$ declare --help

Ad esempio, se desideri creare una variabile con int tipo di dati, puoi utilizzare il declare comando con -i bandiera.

$ declare -i pi
$ pi=3
$ echo $pi
3
$ pi=3.14
bash: 3.14: syntax error: invalid arithmetic operator (error token is ".14")

Ricorda, la declare comando è un modo per manipolare l'attributo della tua variabile ma non aspettarti un sistema di tipi forti da declare comando come in altri linguaggi di programmazione.

5. Output del comando su una variabile

È possibile eseguire qualsiasi comando bash e memorizzare l'output del comando nella variabile. Devi eseguire il comando all'interno di $() come di seguito e successivamente utilizzare la variabile per ulteriori elaborazioni.

$ today_date=$(date)
$ echo ${today_date}
Saturday 11 September 2021 08:53:25 PM IST

6. Usare le virgolette con la variabile

In bash, le virgolette singole e doppie si comportano in due modi diversi. Le virgolette singole impediranno l'espansione e tratteranno il valore come letterale. Le virgolette doppie consentiranno l'espansione.

Dai un'occhiata all'esempio qui sotto. Ho creato una variabile denominata "which_year" ed eseguire un comando insieme a una stringa. Quando uso le virgolette doppie, la date il comando verrà espanso ma quando vengono utilizzate le virgolette singole il date il comando non verrà eseguito e viene memorizzato così com'è nella variabile.

$ which_year="I am in year : $(date +%Y)"
$ echo ${which_year}
I am in year : 2021
$ which_year='I am in year : $(date +%Y)'
$ echo ${which_year}
I am in year : $(date +%Y)'

7. Rimozione della variabile

Puoi rimuovere la variabile usando unset comando.

Il Unset comando rimuove i valori e gli attributi di variabili e funzioni.

Puoi utilizzare unset con -v flag che punta a una variabile o semplicemente a unset comando che per impostazione predefinita prima verifica la definizione della variabile e la annulla.

$ echo ${which_year}
$ unset -v which_year (or) unset which_year
$ echo ${which_year}

Per maggiori dettagli, fare riferimento a unset sezione della guida ai comandi.

$ unset --help

8. Variabile di sola lettura

Uno stato di sola lettura significa che non è possibile modificare il valore o rimuovere la variabile una volta creata. Esistono due modi per creare la variabile di sola lettura.

Usa readonly incorporata in bash per creare la variabile di sola lettura.

$ readonly var1="This is a readonly variable"

In alternativa, puoi utilizzare il declare comando con -r bandiera.

$ declare -r var2="This is a readonly variable too"

Non puoi riassegnare o annullare l'impostazione del readonly valore variabile, genererà un errore.

$ var2="Reassigning with new value"
bash: var2: readonly variable
$ unset var1
bash: unset: var1: cannot unset: readonly variable

9. Variabili speciali integrate in Bash

Bash ha alcune speciali variabili integrate che sono dedicate alla memorizzazione di determinati risultati. Dai un'occhiata al seguente elenco di variabili.

$? = Stores exit status of last ran the command.
$$ = Stores process ID for your bash session.
$0 = Script name.
$1 .. $9 = Arguments passed to the script.
$# = Count the length of values
[email protected], $* = Stores array of all values.

9.1. Stato di uscita ($?)

Ogni comando Linux eseguito ha un codice di uscita associato da (0-255). Zero punta al successo e il resto punta al fallimento con un significato diverso.

$ whoami
$ echo $?
0
$ asdf # WRONG COMMAND
$ echo $?
127

9.2. ID processo ($$)

Usando $$ operatore, puoi ottenere l'ID del processo bash. Se lo esegui dal terminale, ti darà l'id del processo per la tua sessione corrente.

$ echo $$
195777 # PROCESS ID OF MY CURRENT TERMINAL SESSION

9.3. Nome e argomenti dello script ($0-$9)

Gli argomenti possono essere passati ai tuoi script e potresti averli già utilizzati nella tua vita quotidiana. Dai un'occhiata all'id comando che accetta nome utente come argomento.

$ id karthick
uid=1000(karthick) gid=1000(karthick) groups=1000(karthick),4(adm),27(sudo),119(lpadmin),998(docker)

Allo stesso modo, puoi creare script che accettano argomenti. Crea uno script di shell di esempio e copia/incolla il seguente snippet.

cat > main.sh
#!/bin/bash

echo "+ script_name=$0 "
echo "+ first_argument=$1 "
echo "+ second_argument=$2 "
echo "+ third_argument=$3 "

Ora esegui lo script e passa gli argomenti. Sto passando da 1 a 3 come argomenti. $0 raccoglie il nome dello script con il percorso assoluto poiché ho passato il percorso assoluto e $1 a $3 viene assegnato con i rispettivi argomenti passati.

$ /home/karthick/main.sh 1 2 3
+ script_name=/home/karthick/main.sh 
+ first_argument=1 
+ second_argument=2 
+ third_argument=3 

9.4. Lunghezza di un valore ($#)

Usando $# , puoi calcolare il numero totale di argomenti passati o contare la lunghezza di qualsiasi valore. Dai un'occhiata all'esempio qui sotto. Prefissare il nome della variabile con # e stamperà la lunghezza del valore invece del valore effettivo.

$ site_name="OSTechnix"
$ echo ${#site_name}
9

10. Ambito variabile

È importante comprendere l'ambito di una variabile. Quando crei una variabile nel terminale o tramite lo script della shell, quella variabile è associata e disponibile solo per quella sessione. Puoi anche dirlo come una variabile locale. Se provi ad accedere alla variabile da altre sessioni, la variabile non sarà disponibile.

Dai un'occhiata all'immagine qui sotto che ti darà una buona comprensione di cosa succede.

  1. Crea variabile site_name="OSTechnix" dalla tua shell attuale e accedi alla variabile.
  2. Utilizza la $$ variable per vedere in quale sessione ti trovi.
  3. Crea una nuova sessione bash digitando "bash" .
  4. Prova ad accedere alla variabile site_name da questa sessione. Otterrai un output vuoto che è il comportamento predefinito in bash.
  5. Esci dalla nuova sessione digitando "Exit" e ora prova ad accedere alla variabile e sarai in grado di accedere alla variabile.

Se desideri accedere alla variabile globalmente da qualsiasi sessione devi utilizzare il export comando che renderà disponibile l'accesso alla variabile in tutte le sessioni/processi figlio creati dalla sessione corrente.

$ site_name="OSTechnix"
$ export site_name

Oppure

$ export site_name="OSTechnix"
$ bash
$ echo ${site_name}

Puoi ottenere l'elenco delle variabili da esportare digitando "export" dal terminale. Otterrai elenchi di variabili ambientali e definite dall'utente.

$ export

11. Variabile d'ambiente

Finora abbiamo visto come lavorare con le variabili definite dall'utente. Nella sezione introduttiva, ho menzionato che bash supporta le variabili ambientali. Questo insieme di variabili verrà caricato quando avvii le sessioni di bash e vengono mantenute da bash. Queste variabili ambientali vengono utilizzate dalle applicazioni per decidere il comportamento.

Ad esempio, nano è impostato come editor predefinito per la modifica di crontab . Se desidero usare Vim invece di nano, posso impostare EDITOR env variable e crontab controlleranno questa variabile di ambiente e la useranno.

$ export EDITOR="vim"
$ crontab -e

Avviso: La tua variabile è legata solo alla tua sessione corrente. Se vuoi renderlo persistente devi inserirlo in ~/.bashrc o ~/.bash_profile .

Puoi ottenere l'elenco delle variabili ambientali eseguendo "printenv" comando. Vedrai che le variabili ambientali sono definite con lettere maiuscole.

$ printenv

Puoi anche accedere alla particolare variabile ambientale con il comando printenv. Di seguito sono riportate alcune delle variabili ambientali comuni che incontrerai.

$ printenv USER # PRINTS USER NAME
karthick
$ printenv HOME # USER HOME DIRECTORY LOCATION
/home/karthick
$ printenv PWD # PRESSENT WORKING DIRECTORY
/home/karthick
$ printenv SHELL # WHICH SHELL I AM USING NOW
/bin/bash
$ printenv PATH # PATH WHICH IS USED BY BASH TO CHECK AND RUN COMMANDS
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Conclusione

In questa guida alle variabili Bash, abbiamo iniziato con una breve introduzione sulle variabili e su come creare, accedere, modificare e annullare l'impostazione nella rispettiva sezione. E poi abbiamo visto qual è la differenza tra variabili definite dall'utente e ambientali. Prova ad esplorare l'elenco delle variabili ambientali che vengono caricate nelle tue sessioni che ti daranno una buona comprensione di Bash.

Lettura correlata:

  • Scripting Bash:il ciclo For viene spiegato con esempi
  • Scripting di Bash:spiegazione del ciclo While e Until con esempi
  • Scripting Bash:funzioni spiegate con esempi
  • Comando Bash Echo spiegato con esempi in Linux
  • Tutorial Bash Heredoc per principianti
  • Il reindirizzamento di Bash spiegato con esempi
  • Differenza tra la definizione di variabili Bash con e senza esportazione

Linux
  1. Come scrivere uno script Bash con esempi

  2. Differenza tra la definizione di variabili Bash con e senza esportazione

  3. Script Bash(I)

  4. Bash Istruzione If-Else con esempi

  5. Alias ​​con variabile in bash

Il comando Tr in Linux spiegato con esempi

Bash Beginner Series #2:Comprensione delle variabili nello scripting di Bash Shell

Bash Scripting Part2 – Cicli For e While con esempi

Bash Scripting Introduzione Tutorial con 5 esempi pratici

Esercitazione sulle variabili Bash:6 esempi pratici di variabili globali e locali Bash

Script Bash per Loop spiegato con esempi