You are currently viewing Script Shell : Créer son premier script

Script Shell : Créer son premier script

  • Post comments:0 commentaire
  • Temps de lecture :8 min de lecture

Cet article a pour but de vous initier au script Shell, cette pratique vous permet de centraliser une multitude de script hors développement web.

Pour cela, je vais créer un script qui va me faciliter l’installation de mon projet Symfony sur mon local et sur mon environnement de développement.

Initialisation

Pour créer un script shell, nous avons juste besoin de créer un fichier “.sh”. Dans notre cas je vais créer un fichier qui s’appelle “install.sh”.

Cependant cela ne suffit pas comme par exemple les fichiers php, nous avons besoin de plus de détails afin que notre système d’exploitation identifie le fait que c’est un script shell.

Le SheBang

Le Shebang est un en-tête du fichier texte qui va permettre au système d’exploitation de comprendre que c’est un script. Par exemple les fichiers php commencent toujours avec “<?php”.

Pour notre script, notre première ligne sera défini comme ci-dessous :

#!/bin/bash

Créons notre script Shell

Désormais notre système d’exploitation va reconnaître notre script, nous allons lui donner quelques instructions

#!/bin/bash

echo "Hello World"
exit

Nous allons afficher sur notre terminal Hello World lorsqu’on exécute le script.

Avant de l’exécuter il faudrait que le fichier soit executable :

> chmod +x script.sh

> ./script.sh
Hello World

Plus en détail, la fonction chmod permet d’attribuer des droits sur un dossier ou un fichier.

Les droits sont les suivantes :

  • Ecriture (w)
  • Lecture (r)
  • Exécuter (x)

Lorsqu’on crée notre script, nous attribuons le droit d’écriture et de lecture.

Donc l’argument +x permet de pouvoir exécuter le script.sh.

Variables predefinis

Pour aller plus loin dans notre script, nous voulons récupérer par exemple un paramètre.

Voici une liste des variables qu’on peut utiliser dans notre script

VariableDescription
$0Nom du script
$1, $2, …, $91er paramètre, deuxième paramètre, … de la ligne de commande
$*Tous les paramètres en une string
$@Tous les paramètres avec des séparateurs
$-Options du shell

Des variables qui vous permettent de récupérer des informations de la dernière commande effectué.

Variable Description
$!PID du dernier processus lancé en arrière plan
$?Code de retour de la dernière commande
$$PID du shell
$_Dernier argument de la commande précédente

Maintenant, utilisons une variable pour notre script

#!/bin/bash

echo "Hello World $1"
echo "Vous avez $2 ans"
exit
> ./script.sh Gary 28
Hello World Gary
Vous avez 28 ans

Variables déclarable dans notre Script Shell

Pour optimiser son script, on peut créer des variables au début de notre script.

#!/bin/bash
NAME="Gary Houbre"

echo "Hello World ${NAME}"
exit
> ./script.sh
Hello World Gary Houbre

Interaction avec l’utilisateur

Vous aimerez dans votre script, créer une interaction (question/réponse).

Voici un exemple de script avec un échange avec l’utilisateur afin de connaître des informations de sa part.

#!/bin/bash

echo "Quel est votre prénom ?"
read firstName

# Si vous voulez faire en une ligne
read -p "Quel est votre nom ?" lastName

echo "Vous vous appelez $firstName $lastName"
exit

Les fonctions

Pour optimiser notre script, nous pouvons créer des fonctions.

#!/bin/bash

read -p "Quel est votre prénom ?" firstName

function show() {
    echo "merci $firstName"
    exit 1
}

show
exit

Les conditions et boucles

Afin de rendre le script un peu plus intelligent, nous pouvons inclure des conditions et des boucles.

Un exemple avec une condition sur le retour de l’interaction d’utilisateur.

#!/bin/bash

read -p "Quel est votre prénom ?" firstName

function show() {
    if [ $firstName == "Gary" ] ; then
        echo "merci $firstName"
    else
        echo "merci Annonyme"
    fi

    exit 1
}

show
exit

Un exemple , où on utilise une boucle.

#!/bin/bash

read -p "Donne moi un chiffre en dessous de 100 ?" number

function getWhile() {
    $i = $number
    echo "/// WHILE ///"
    while [ $i -lt 100 ] ; do 
        echo  $i
        i=$[$i+1]
    done
    exit
}

function getFor() {
    $i = $number
    echo "/// FOR ///"
    for ((i=0;i<100;i=i+1)); do
        echo $i
    done
    exit
}

getWhile
getFor
exit

Conclusion

Avec l’ensemble des points, nous pouvons effectuer un script d’installation d’un projet Symfony.

#!/bin/bash
# Script à la racine d'un projet Symfony

function composerInstall() {
    echo "Installation Composer"
    composer install
    exit
}

function databaseCreate() {
    echo "Creation de la base de donnée"
    php bin/console doctrine:database:create
    read -p "Utilisez-vous des fichiers de migration (Y/N) ?" migration
    if [ $migration == "Y" ] 
    then
        php bin/console doctrine:migration:migrate -n
    else
        php bin/console doctrine:schema:update --force --complete
}

if [ -e .env.local ]
then
    databaseCreate
else
    echo "Pas de fichier .env.local existant"
fi

echo "Installation fini"

exit

Ceci est un exemple simple d’effectuer un script Shell qui vous permet de vous faciliter la mise en place de votre projet.

Avec l’ensemble des exemples de script Shell que nous avons vu. Vous être prêt à mettre en place des scripts pour optimiser votre espace de travail.

Si vous voulez voir plus loin dans les scripts, je vous conseille l’article suivant : Lien

Laisser un commentaire