WikiBtsSio

Si5An1213InitiationScript

T.P. groupe SLAM initiation aux scripts Bash.


Nous avons déjà travaillé sur des scripts Bash.
Il s'agit de fichiers texte qui débutent par #!/bin/bash
et qui doivent être rendus exécutables.
Respectez les noms et la numération proposée.

On peut définir des variables dans le script de la manière suivante :
variable = "toto"
pour les manipuler il faut les préfixer par un $
On peut utiliser la commande echo pour afficher les variables.

Exemple :
#!/bin/bash
variable="Bonjour"
echo $variable

Travail à faire : créer ce premier script avec nano, enregistrez le, modifiez les droits pour le rendre exécutable, testez.
Pour insérer des commentaires, utilisez le symbole #.
Nom du script : prog1

Il est possible en bash de récupérer le résultat d'une commande.
Exemple liste=$(ls -al)

Travail à faire :
Testez.
Modifier le script réalisé ci-dessus (prog1), en utilisant la commande whoami pour afficher Bonjour suivi du nom de l'utilisateur.
Nom du script à produire : prog2

Un script bash peut recevoir des paramètres, exemple avec la commande ls
ls Nomdunrépertoire

Testez le script suivant :
#!/bin/bash
fichier=$1
nbl=$(wc $fichier –l)
echo “Le fichier contient $nbl lignes”
exit 0

Nous rencontrons un problème d'affichage, il ne faut récupérer que le premier champ.
Il faut par exemple utiliser la commande cut.
c.f. la commande cut.

Travail à faire :
Modifiez le script pour obtenir un affichage correct.
Nom du script à produire : prog3

Instructions « if »

Mode d'emploi
if [ condition ] ;
then
  • instruction si oui
else
  • instruction si non
fi

Expression des conditions :
Pour les variables numériques :
if (( $x == $y)) then …

Pour les chaines de caractères : if [[ "$nom" == ’Dupond’ ]] then … (attention : espace après [[ et avant ]] )

Travail à faire :
Modifier le script avec l'instruction whoami pour vérifier en début de script que l'utilisateur se trouve dans son répertoire (/home/nomdelutilisateur), sinon lui afficher un message d'erreur.
Nom du script à produire : prog4

Script de sauvegarde.

En vous aidant de ce qui a été fait précédemment, écrire un script qui traite le cas d’utilisation suivant :
1. L’utilisateur lance le script avec un nom de fichier en paramètre
2. Le système vérifie que l’utilisateur est dans son répertoire personnel
3. Le système crée une sauvegarde de l’objet sous le nom « nom.save »
4. Le système affiche un message de confirmation.

Scénarios alternatifs :
2.a Si l’utilisateur n’est pas dans son répertoire, le système affiche un message d’erreur et s’interrompt.
3.a Si le fichier est inexistant, le système affiche un message d’erreur.

Pour déterminer si un fichier est présent, on utilisera la commande (attention à la syntaxe exacte)
if [ -f "$nomfichier" ]; then … else … fi # finsi

Nom du script à produire : prog5

Que va-t-il se passer si l'utilisateur donne un répertoire au lieu d'un fichier ?

Pour déterminer si un nom correspond à un dossier, on utilisera la commande (attention à la syntaxe exacte)
if [ -d "$nom" ];
  • then
  • else
  • fi # finsi

Travail à faire : Modifier le script précédent pour qu'il puisse traiter les fichiers et/ou dossier.
Nom du script à produire : prog6


Pour terminer vous pouvez réaliser la sauvegarde en compressant le fichier en utilisant la commande zip.
Modifier le script pour qu'il propose la compression en option.

Nom du script à produire : prog7


L'ensemble du travail devra être rendu via Internet sur le site http://btsio.net
Des informations complémentaires seront écrites au tableau.
Le travail doit être rendu avant la fin des deux heures pour les présents.
Pour les absents il doit être réalisé avant vendredi soir.
A vous de demander à vos camarades ou à moi les informations nécessaires.
La date et l'heure de rendu du travail est celle donnée par le serveur.

Liens à consulter :
Manipuler les chaines de caractères.
La commande cut.

Commandes complexes (pour information).
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]