Comment une variable est-elle maintenue sous Linux?

Le shell en ligne de commande du système d'exploitation Linux est un outil puissant qui, à la base, est un interpréteur de langage de programmation. Comme avec tout autre langage de programmation, le shell de commande vous permet d'utiliser des variables pour stocker, récupérer et manipuler des données.

Définition et récupération de valeurs de variable

Dans le shell de commande bash, qui est le shell par défaut utilisé sous Linux, vous pouvez définir une variable à l'aide de la syntaxe générale NAME = VALUE . Par exemple, à l'invite de commande, vous pouvez taper:

 x = 5 

Et une variable nommée x sera définie sur la valeur numérique 5 . Les noms de variables peuvent être en majuscules ou en minuscules, ou un mélange des deux, et ils sont sensibles à la casse. Lors de la définition de la variable, il ne doit y avoir aucun espace entre le nom de la variable, le signe égal et la valeur.

Il n'est pas nécessaire de déclarer la variable à l'avance ou de spécifier son type de données. Bash détermine le type de la variable en fonction de sa valeur.

Par exemple, notre variable peut également contenir une chaîne:

 x = bonjour 

Pour une chaîne simple, il n'est pas nécessaire de la placer entre guillemets, mais si la chaîne contient des espaces, vous devez l'entourer de guillemets:

 x = "Bonjour le monde!" 

Pour récupérer la valeur de votre variable, préfixez-la par un signe dollar. Par exemple, pour afficher la valeur de x à l'aide de la commande echo, exécutez la commande suivante:

 echo $ x 

Quelles sorties:

 Bonjour le monde! 

Ce qui se passe ici, c'est que le shell prend la valeur de votre variable et l'insère dans votre commande. Vous pouvez faire référence à la variable n'importe où dans votre commande, même à l'intérieur d'une chaîne entre guillemets:

 echo "$ x $ x Quelqu'un peut-il m'entendre? dis-je, $ x" 
 Bonjour le monde! Bonjour le monde! Est-ce que quelqu'un m'entend? J'ai dit, bonjour, le monde! 

Conseil: Les variables ne sont interprétées à l'intérieur d'une chaîne que si vous utilisez des guillemets doubles. Si vous utilisez des guillemets simples, le nom de la variable sera interprété littéralement, sans interprétation:

 echo '$ x $ x Quelqu'un peut-il m'entendre? J'ai dit, $ x ' 
 $ x $ x Quelqu'un peut-il m'entendre? J'ai dit, x $ 

Définition de la valeur d'une variable comme sortie d'une commande

Pour que la valeur de votre variable soit la sortie d'une commande spécifique, utilisez le formulaire:

 NOM = $ (COMMANDE) 

Par exemple, si votre nom d'utilisateur est "steven", l'exécution de la commande whoami renverra la valeur steven . Vous pouvez définir ceci sur une variable:

 myname = $ (whoami) 
 echo $ myname 
 steven 

Vous pouvez le faire pour n'importe quelle commande. Si la commande accepte des arguments, vous n'avez pas besoin de la mettre entre guillemets. Tout ce qui est entre parenthèses sera exécuté en tant que commande:

 x = "Bonjour le monde!" 
 x = $ (echo $ x $ x $ x) 
 echo $ x 
 Bonjour le monde! Bonjour le monde! Bonjour le monde! 

Utiliser des variables dans un script simple

Voyons comment utiliser une variable dans un simple script de sauvegarde. Supposons que vous souhaitiez tout sauvegarder dans les documents du répertoire de votre répertoire personnel. Le script archivera tout ce qui se trouve dans ce répertoire, ainsi que tous les répertoires qu'il contient, dans une archive tar dont le nom contient la date du jour. Gardons les sauvegardes dans un répertoire appelé sauvegardes de votre répertoire personnel (nous supposerons que ce répertoire existe déjà. Sinon, vous pouvez exécuter mkdir ~ / backups pour le créer).

Ouvrez un éditeur de texte et placez ce texte dans un nouveau fichier:

 #! / bin / bash MYFILENAME = ~ / backups / documents-backup - $ (date +% Y-% m-% d) .tar.gz 

tar -czf $ OUTPUTFILE ~ / documents

Regardons chaque ligne de ce script. La première ligne, #! / Bin / bash, déclare le script en tant que fichier exécutable et spécifie qu'il doit être exécuté avec / bin / bash, qui est l'exécutable du shell de la commande bash. Note: Le fichier ne sera pas exécutable avant que nous ayons chmod le fichier plus tard, mais cette ligne est requise dans tout script bash approprié.

La deuxième ligne définit la variable MYFILENAME, qui contiendra le nom de l’archive contenant notre sauvegarde. La première partie du nom de fichier est notre répertoire de sauvegarde, ~ / backups .

Remarque: le caractère tilde ( ~ ) est un nom de répertoire spécial qui représente toujours notre répertoire de base.)

Ensuite, nous avons le début du nom de fichier, documents-backup- . Ensuite, nous insérons la date actuelle à l'aide de la commande date, du symbole plus et de la chaîne de format de date % Y-% m-% d . Par exemple, si la date était le 23 février 2015, le résultat serait le 2015-02-23 .

Enfin, nous utilisons l'extension .tar.gz, qui est l'extension de nom de fichier appropriée pour un fichier tar compressé avec gzip. Ainsi, si nous exécutions ce script le 23 février 2015, la valeur de MYFILENAME serait ~ / backups / documents-backup-2015-02-23.tar.gz . Si nous l'exécutions le 7 mai 2015, la valeur serait ~ / backups / documents-backup-2015-05-07.tar.gz .

La troisième ligne est la commande qui crée l'archive. Nous utilisons la commande tar avec l'option -czf, qui créera ( c ) une archive gzippée ( z ) en utilisant le nom de fichier spécifié ( f ). Ensuite, nous spécifions le nom du fichier d’archive en nous référant à la variable créée à la ligne 2, OUTPUTFILE . Enfin, nous disons à tar ce que nous voulons archiver: le répertoire ~ / documents .

Pour exécuter le script, enregistrez le fichier texte dans votre répertoire personnel (ou dans un autre emplacement de votre choix) et attribuez-lui un nom approprié, par exemple backup-my-docs . Il n'est pas nécessaire de lui attribuer une extension de nom de fichier. Quittez l'éditeur de texte et rendez le fichier exécutable à l'aide de la commande chmod + x, par exemple:

 chmod + x ~ / backup-my-docs 

Maintenant, vous pouvez exécuter le script. Par exemple, si le script se trouve dans votre répertoire de travail, vous pouvez l'exécuter avec:

 ./backup-my-docs 

Ou, s'il se trouve dans votre répertoire personnel, vous pouvez l'exécuter à partir de n'importe quel répertoire à l'aide de la commande suivante:

 ~ / backup-my-docs