Variabili di base in Bash

Introduzione al Bash Scripting

Alex Scriven

Data Scientist

Assegnare variabili

Come in altri linguaggi, puoi assegnare variabili con l’uguale.

var1="Moon"

Poi richiamale con la notazione $.

echo $var1
Moon
Introduzione al Bash Scripting

Assegnare stringhe

Dai al nome della variabile qualcosa di sensato:

firstname='Cynthia'
lastname='Liu'

echo "Hi there" $firstname $lastname
Hi there Cynthia Liu

Sono state restituite entrambe le variabili, ottimo!

Introduzione al Bash Scripting

Dimenticare il $ nella notazione

Se ti dimentichi la notazione $, non è una variabile!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Introduzione al Bash Scripting

(Non) assegnare variabili

Bash non perdona gli spazi nella creazione delle variabili. Attento agli spazi!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Introduzione al Bash Scripting

Apici singoli, doppi e backtick

In Bash, virgolette diverse significano cose diverse, sia in creazione sia in stampa.

  • Apici singoli ('testo') = la shell interpreta letteralmente
  • Doppie virgolette ("testo") = la shell interpreta alla lettera tranne $ e backtick

L’ultimo modo crea una “shell nella shell”, utile per chiamare programmi da riga di comando. Si fa con i backtick.

  • Backtick (`testo`) = la shell esegue il comando e cattura lo STDOUT in una variabile
Introduzione al Bash Scripting

Diversi modi di creare variabili

Vediamo l’effetto dei diversi tipi di creazione di variabili

now_var='NOW'

now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Introduzione al Bash Scripting

Il programma date

Il programma date è utile per mostrare i backtick

Output normale del programma:

date
Mon  2 Dec 2019 14:07:10 AEDT
Introduzione al Bash Scripting

Shell nella shell

Ora usiamo la shell nella shell:

rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.

date è stato chiamato, l’output catturato e inserito in linea con echo.

Abbiamo usato una shell dentro la shell!

Introduzione al Bash Scripting

Parentesi vs backtick

Esiste un equivalente alla notazione con backtick:

rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.

Funzionano uguale, ma i backtick sono più vecchi. Le parentesi sono più usate oggi. (Vedi http://mywiki.wooledge.org/BashFAQ/082)

Introduzione al Bash Scripting

Andiamo a praticare!

Introduzione al Bash Scripting

Preparing Video For Download...