Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Variabili e costanti

Tuttavia, c'è un problema con il nostro script. Notate come si ripete la stringa “System Information Report”? Con il nostro piccolo script non è un problema, ma immaginiamo che il nostro script fosse davvero lungo e avessimo più istanze di questa stringa. Se volessimo cambiare il titolo in qualcos'altro, dovremmo cambiarlo in più punti, il che potrebbe richiedere molto lavoro. E se potessimo organizzare lo script in modo che la stringa appaia solo una volta e non più volte? Ciò renderebbe molto più semplice la futura manutenzione dello script. Ecco come potremmo farlo:



#! / Bin / bash


# Programma per l'output di una pagina di informazioni di sistema


title="Rapporto informazioni di sistema"


eco "

$titolo

$titolo

"

#! / Bin / bash


# Programma per l'output di una pagina di informazioni di sistema


title="Rapporto informazioni di sistema"


eco "

$titolo

$titolo

"


Creando un variabile detto titolo ed assegnandogli il valore “System Information Report”, possiamo sfruttare l'espansione dei parametri e posizionare la stringa in più locazioni.

Quindi, come creiamo una variabile? Semplice, lo usiamo e basta. Quando la shell incontra una variabile, la crea automaticamente. Questo differisce da molti linguaggi di programmazione in cui le variabili devono essere esplicitamente dichiarata o definito prima dell'uso. Il guscio è molto lassista su questo, il che può portare ad alcuni problemi. Ad esempio, considera questo scenario riprodotto sulla riga di comando:


[io@linuxbox~]$ pippo = "sì" [io@linuxbox~]$ echo $pippo

[io@linuxbox~]$ echo $sciocco


[io@linuxbox~]$

[io@linuxbox~]$ pippo = "sì" [io@linuxbox~]$ echo $pippo

[io@linuxbox~]$ echo $sciocco


[io@linuxbox~]$


Assegniamo prima il valore “sì” alla variabile foo, quindi visualizza il suo valore con eco. Successivamente mostriamo il valore del nome della variabile scritto erroneamente come "fool" e otteniamo un risultato vuoto. Questo perché la shell ha creato felicemente la variabile ingannare quando lo ha incontrato e gli ha dato il valore predefinito di niente, o vuoto. Da questo, impariamo che dobbiamo prestare molta attenzione alla nostra ortografia! È anche importante capire cosa è realmente accaduto in questo esempio. Dal nostro precedente sguardo su come la shell esegue le espansioni, sappiamo che il comando:



[me@linuxbox ~]$ echo $pippo

[me@linuxbox ~]$ echo $pippo


subisce un'espansione dei parametri e si traduce in:



[me@linuxbox ~]$ echo sì

[me@linuxbox ~]$ echo sì


Considerando che il comando:



[me@linuxbox ~]$ echo $stupido

[me@linuxbox ~]$ echo $stupido


si espande in:



[me@linuxbox ~]$ eco

[me@linuxbox ~]$ eco


La variabile vuota si espande nel nulla! Questo può creare scompiglio con i comandi che richiedono argomenti. Ecco un esempio:



[io@linuxbox~]$ pippo=pippo.txt [io@linuxbox~]$ pippo1=pippo1.txt [io@linuxbox~]$ cp $pippo $fool

cp: operando del file di destinazione mancante dopo `foo.txt'

[io@linuxbox~]$ pippo=pippo.txt [io@linuxbox~]$ pippo1=pippo1.txt [io@linuxbox~]$ cp $pippo $fool

cp: operando del file di destinazione mancante dopo `foo.txt'


Prova `cp --help' per maggiori informazioni.

Prova `cp --help' per maggiori informazioni.


Assegniamo valori a due variabili, foo ed pippo1. Quindi eseguiamo un cp, ma digita in modo errato il nome del secondo argomento. Dopo l'espansione, il cp comando viene inviato solo un argomento, sebbene ne richieda due.

Ci sono alcune regole sui nomi delle variabili:

1. I nomi delle variabili possono essere costituiti da caratteri alfanumerici (lettere e numeri) e caratteri di sottolineatura.

2. Il primo carattere del nome di una variabile deve essere una lettera o un carattere di sottolineatura.

3. Non sono ammessi spazi e segni di punteggiatura.

La parola "variabile" implica un valore che cambia e in molte applicazioni le variabili vengono utilizzate in questo modo. Tuttavia, la variabile nella nostra applicazione, titolo, è usato come a costante. Una costante è proprio come una variabile in quanto ha un nome e contiene un valore. La differenza è che il valore di una costante non cambia. In un'applicazione che esegue calcoli geometrici, potremmo definire PI come costante e assegnargli il valore di 3.1415, invece di usare letteralmente il numero in tutto il nostro programma. La shell non fa distinzione tra variabili e costanti; sono principalmente per comodità del programmatore. Una convenzione comune consiste nell'usare lettere maiuscole per designare costanti e lettere minuscole per variabili vere. Modificheremo il nostro script per conformarsi a questa convenzione:



#! / Bin / bash

# Programma per l'output di una pagina di informazioni di sistema TITOLO="Rapporto informazioni di sistema Per $HOSTNAME" eco "

$TITOLO

$TITOLO

"

#! / Bin / bash

# Programma per l'output di una pagina di informazioni di sistema TITOLO="Rapporto informazioni di sistema Per $HOSTNAME" eco "

$TITOLO

$TITOLO

"


Abbiamo anche colto l'occasione per ravvivare il nostro titolo aggiungendo il valore della variabile shell

NOME HOST. Questo è il nome di rete della macchina.


Immagine

Note:: La shell in realtà fornisce un modo per imporre l'immutabilità delle costanti, attraverso l'uso del dichiarare comando integrato con il -r (sola lettura) opzione. Se avessimo assegnato? TITOLO per di qua:


dichiarare -r TITLE="Titolo pagina"


la shell impedirebbe qualsiasi successivo incarico a TITOLO. Questa funzione è usata raramente, ma esiste per script molto formali.


Immagine


 

Il miglior sistema operativo cloud computing su OnWorks: