L'une des fonctionnalités les plus utiles des scripts shell est le caractère d'apostrophe, généralement appelé backtick (`) dans le monde Linux. Attention, il ne s'agit pas du caractère normal de guillemet simple que vous avez l'habitude d'utiliser pour les chaînes. Parce qu'il n'est pas utilisé très souvent en dehors des scripts shell, vous ne savez peut-être même pas où le trouver sur votre clavier. Vous devriez vous familiariser avec lui car c'est un composant crucial de nombreux scripts shell.
Astuce :Sur un clavier américain, il se trouve généralement sur la même touche que le symbole tilde ( ∼ ).Le backtick vous permet d'affecter la sortie d'une commande shell à une variable. Bien que cela ne semble pas beaucoup, c'est un élément majeur de la programmation de scripts. Vous devez entourer toute la commande de ligne de commande avec des caractères de backtick :
# testing=`date`
Le shell exécute la commande dans les backticks et affecte la sortie à la variable testing. Voici un exemple de création d'une variable à l'aide de la sortie d'une commande shell normale :
$ cat myscript.sh #!/bin/bash # using the backtick character testing=`date` echo "The date and time are: $testing" $
La variable testing reçoit la sortie de la commande date et est utilisée dans l'instruction echo pour l'afficher. L'exécution du script shell produit la sortie suivante :
$ chmod u+x myscript.sh $ ./myscript.sh The date and time are: Mon Jul 21 09:13:42 IST 2014 $
Ce n'est pas si excitant dans cet exemple (vous pouvez tout aussi bien mettre la commande dans l'instruction echo), mais une fois que vous avez capturé la sortie de la commande dans une variable, vous pouvez faire n'importe quoi avec.
Voici un exemple populaire de la façon dont le backtick est utilisé pour capturer la date actuelle et l'utiliser pour créer un nom de fichier unique dans un script :
#!/bin/bash # copy the /usr/bin directory listing to a log file today=`date +%y%m%d` ls /usr/bin -al > /tmp/log.$today
La variable d'aujourd'hui est affectée à la sortie de la commande de date formatée. Il s'agit d'une technique courante utilisée pour extraire les informations de date pour les noms de fichiers journaux. Le format +%y%m%d indique à la commande date d'afficher la date sous la forme d'une année, d'un mois et d'un jour à deux chiffres :
$ date +%y%m%d 140721 $
Le script attribue la valeur à une variable, qui est ensuite utilisée dans le cadre d'un nom de fichier. Le fichier lui-même contient la sortie redirigée d'une liste de répertoires. Après avoir exécuté le script, vous devriez voir un nouveau fichier dans le répertoire /tmp :
$ ls -l /tmp/log.140721 -rw-rw-r-- 1 geek geek 116755 Jul 21 09:21 /tmp/log.140721
Le fichier journal apparaît dans le répertoire en utilisant la valeur de la variable $today dans le cadre du nom de fichier. Le contenu du fichier journal est la liste des répertoires du répertoire /usr/bin. Si le script est exécuté le lendemain, le nom du fichier journal sera belog.140722, créant ainsi un nouveau fichier pour le nouveau jour.