Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Affectation de valeurs aux variables et constantes

C'est ici que notre connaissance de l'expansion commence vraiment à porter ses fruits. Comme nous l'avons vu, les variables reçoivent des valeurs de cette façon :

variable=Plus-value

De variable est le nom de la variable et Plus-value est une chaîne. Contrairement à d'autres langages de programmation, le shell ne se soucie pas du type de données affectées à une variable ; il les traite tous comme des chaînes. Vous pouvez forcer le shell à restreindre l'affectation aux entiers en utilisant le déclarer commande avec le -i mais, comme définir des variables en lecture seule, cela est rarement fait.

Notez que dans une affectation, il ne doit y avoir aucun espace entre le nom de la variable, le signe égal et la valeur. Alors en quoi peut consister la valeur ? Tout ce que nous pouvons développer en une chaîne :


a = z

b="une chaîne"

c="une chaîne et $b"


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

# Affectez la chaîne "z" à la variable a.

# Les espaces incorporés doivent être entre guillemets.

# D'autres extensions telles que les variables peuvent être

# étendu à l'affectation.

# Résultats d'une commande.

# Développement arithmétique.

# Séquences d'échappement telles que les tabulations et les nouvelles lignes.

a = z

b="une chaîne"

c="une chaîne et $b"


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


image

Plusieurs affectations de variables peuvent être effectuées sur une seule ligne :



a=5 b="une chaîne"

a=5 b="une chaîne"


Pendant le développement, les noms de variables peuvent être entourés d'accolades facultatives « {} ». Ceci est utile dans les cas où un nom de variable devient ambigu en raison de sa con-


texte. Ici, nous essayons de changer le nom d'un fichier de mon fichier à monfichier1, en utilisant une variable :



[moi@linuxbox ~]$ nom_fichier="monfichier" [moi@linuxbox ~]$ touchez $nom de fichier [moi@linuxbox ~]$ mv $nom_fichier $nom_fichier1

mv : opérande du fichier de destination manquant après `myfile' Essayez `mv --help' pour plus d'informations.

[moi@linuxbox ~]$ nom_fichier="monfichier" [moi@linuxbox ~]$ touchez $nom de fichier [moi@linuxbox ~]$ mv $nom_fichier $nom_fichier1

mv : opérande du fichier de destination manquant après `myfile' Essayez `mv --help' pour plus d'informations.


Cette tentative échoue car le shell interprète le deuxième argument du mv commande en tant que nouvelle variable (et vide). Le problème peut être surmonté de cette façon :



[moi@linuxbox ~]$ mv $nomfichier ${nomfichier}1

[moi@linuxbox ~]$ mv $nomfichier ${nomfichier}1


En ajoutant les accolades environnantes, le shell n'interprète plus la fin 1 dans le cadre du nom de la variable.

Nous en profiterons pour ajouter quelques données à notre rapport, à savoir la date et l'heure de création du rapport et le nom d'utilisateur du créateur :



#! / Bin / bash

# Programme pour afficher une page d'informations système TITLE="Rapport d'informations système pour $HOSTNAME"

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

TIMESTAMP="Généré $CURRENT_TIME, par $USER"


écho "

$ TITRE

$ TITRE

$TIMESTAMP

"

#! / Bin / bash

# Programme pour afficher une page d'informations système TITLE="Rapport d'informations système pour $HOSTNAME"

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

TIMESTAMP="Généré $CURRENT_TIME, par $USER"


écho "

$ TITRE

$ TITRE

$TIMESTAMP

"


Meilleur système d'exploitation Cloud Computing chez OnWorks :