Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Assegnazione di valori a variabili e costanti

È qui che la nostra conoscenza dell'espansione inizia davvero a dare i suoi frutti. Come abbiamo visto, alle variabili vengono assegnati valori in questo modo:

variabile=APPREZZIAMO

where variabile è il nome della variabile e APPREZZIAMO è una stringa. A differenza di altri linguaggi di programmazione, alla shell non interessa il tipo di dati assegnati a una variabile; li tratta tutti come stringhe. Puoi forzare la shell a limitare l'assegnazione a numeri interi usando il tasto dichiarare comando con il -i opzione, ma, come l'impostazione delle variabili in sola lettura, questa operazione viene eseguita raramente.

Si noti che in un'assegnazione non devono esserci spazi tra il nome della variabile, il segno di uguale e il valore. Quindi in cosa può consistere il valore? Tutto ciò che possiamo espandere in una stringa:


a=z

b="una stringa"

c="una stringa e $b"


d=$(ls -l foo.txt) e=$((5 * 7)) f="\t\ta stringa\n"

# Assegna la stringa "z" alla variabile a.

# Gli spazi incorporati devono essere tra virgolette.

# Altre espansioni come le variabili possono essere

# espanso nel compito.

# Risultati di un comando.

# Espansione aritmetica.

# Sequenze di escape come tab e newline.

a=z

b="una stringa"

c="una stringa e $b"


d=$(ls -l foo.txt) e=$((5 * 7)) f="\t\ta stringa\n"


Immagine

L'assegnazione di più variabili può essere eseguita su una singola riga:



a=5 b="una stringa"

a=5 b="una stringa"


Durante l'espansione, i nomi delle variabili possono essere racchiusi tra parentesi graffe facoltative "{}". Ciò è utile nei casi in cui il nome di una variabile diventa ambiguo a causa del suo contesto circostante.


testo. Qui, proviamo a cambiare il nome di un file da il mio file a miofile1, utilizzando una variabile:



[io@linuxbox~]$ nomefile="miofile" [io@linuxbox~]$ tocca $nomefile [io@linuxbox~]$ mv $nomefile $nomefile1

mv: manca l'operando del file di destinazione dopo `myfile' Provare `mv --help' per maggiori informazioni.

[io@linuxbox~]$ nomefile="miofile" [io@linuxbox~]$ tocca $nomefile [io@linuxbox~]$ mv $nomefile $nomefile1

mv: manca l'operando del file di destinazione dopo `myfile' Provare `mv --help' per maggiori informazioni.


Questo tentativo fallisce perché la shell interpreta il secondo argomento del mv comando come una nuova (e vuota) variabile. Il problema può essere superato in questo modo:



[io@linuxbox~]$ mv $nomefile ${nomefile}1

[io@linuxbox~]$ mv $nomefile ${nomefile}1


Aggiungendo le parentesi graffe circostanti, la shell non interpreta più il finale 1 come parte del nome della variabile.

Cogliamo l'occasione per aggiungere alcuni dati al nostro rapporto, vale a dire la data e l'ora in cui è stato creato il rapporto e il nome utente del creatore:



#! / Bin / bash

# Programma per generare una pagina di informazioni di sistema TITLE="Rapporto informazioni di sistema per $HOSTNAME"

CURRENT_TIME=$(data +"%x %r %Z")

TIMESTAMP="Generato $CURRENT_TIME, da $USER"


eco "

$TITLE

$TITLE

$TIMESTAMP

"

#! / Bin / bash

# Programma per generare una pagina di informazioni di sistema TITLE="Rapporto informazioni di sistema per $HOSTNAME"

CURRENT_TIME=$(data +"%x %r %Z")

TIMESTAMP="Generato $CURRENT_TIME, da $USER"


eco "

$TITLE

$TITLE

$TIMESTAMP

"


Il miglior sistema operativo cloud computing su OnWorks: