Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
tp1 [2019/01/14 10:32] – gilles | tp1 [2023/09/25 13:59] (Version actuelle) – [Q.1 - Quelques manipulations] gilles |
---|
---- | ---- |
| |
===== Q1. Quelques manipulations ===== | ===== Q.1 - Quelques manipulations ===== |
| |
* L'affectation de variable en shell-script doit se faire de la façon suivante ''v=valeur'' (**Attention** : jamais d'espace à gauche et à droite de l'espace). Sur la ligne de commande, tapez ''v=6''. Validez. Tapez ''echo $v''. Vous avez en votre possession l'outil d'affectation et de déréférencement d'une variable en ''bash''. | * L'affectation de variable en shell-script doit se faire de la façon suivante ''v=valeur'' (**Attention** : jamais d'espace à gauche et à droite du caractère ''=''). Sur la ligne de commande, tapez ''v=6''. Validez. Tapez ''echo $v''. Vous avez en votre possession l'outil d'affectation et de déréférencement d'une variable en ''bash''. |
* tapez maintenant ''echo 5 > mavaleur5'', validez | * tapez maintenant ''echo 5 > mavaleur5'', validez |
* tapez ''ls mavaleur5''. Validez. Que constatez-vous ? | * tapez ''ls mavaleur5''. Validez. Que constatez-vous ? |
* tapez ''cat mavaleur5''. Que constatez-vous ? | * tapez ''cat mavaleur5''. Que constatez-vous ? |
* si vous tapez ''echo $v'', vous devez toujours constater l'affichage de ''6'' sur la sortie standard. Tapez ''v=`cat mavaleur5`'' puis ''echo $v''. Que constatez-vous ? | * si vous tapez ''echo $v'', vous devez toujours constater l'affichage de ''6'' sur la sortie standard. Tapez ''v=`cat mavaleur5`'' puis ''echo $v''. Que constatez-vous ? |
* tapez maintenant ''echo 6 >> mavaleur5'', validez, puis ''cat mavaleur5''. Que constatez-vous ? | * tapez maintenant ''echo 6 > > mavaleur5'', validez, puis ''cat mavaleur5''. Que constatez-vous ? |
* Tapez ''v=`cat mavaleur5`'' puis ''echo $v''. Que constatez-vous ? | * Tapez ''v=`cat mavaleur5`'' puis ''echo $v''. Que constatez-vous ? |
| |
* Tout au long de ce TP vous devrez utiliser les ''manpages'' comme élément de documentation de référence. Ainsi, la commande ''man bash'' vous fournit une documentation exhaustive du shell de commandes ''bash''. Cette documentation vous permettra de prendre connaissance de toutes les subtilités du langage de script ''bash''. Cette documentation est dans le document fournit {{ :bash.pdf |ici}}. Pour les questions suivantes, vous devez vous renseigner sur les variables d'environnement ''$#'', ''$0'', ''$1'', ''$2'', ''$?'', etc. | * Tout au long de ce TP vous devrez utiliser les ''manpages'' comme élément de documentation de référence. Ainsi, la commande ''man bash'' vous fournit une documentation exhaustive du shell de commandes ''bash''. Cette documentation vous permettra de prendre connaissance de toutes les subtilités du langage de script ''bash''. Cette documentation est dans le document fournit {{ :bash.pdf |ici}}. Pour les questions suivantes, vous devez vous renseigner sur les variables d'environnement ''$#'', ''$0'', ''$1'', ''$2'', ''$?'', etc. |
| |
===== Q2. manipulation d'un paramètre ===== | ===== Q.2 - manipulation d'un paramètre ===== |
| |
* Ecrivez un //shell-script// nommé ''check-arg.sh'' qui vérifie qu'il a un argument passé en paramètre et que cet argument est un fichier régulier. Votre script s'échappera avec une erreur égale à ''1'' (et ''0'' sinon) si l'argument est un fichier inexistant, ou s'il ne s'agit pas d'un fichier régulier. | * Ecrivez un //shell-script// nommé ''check-arg.sh'' qui vérifie qu'il a un argument passé en paramètre et que cet argument est un fichier régulier. Votre script s'échappera avec une erreur égale à ''1'' (et ''0'' sinon) si l'argument est un fichier inexistant, ou s'il ne s'agit pas d'un fichier régulier. |
---- | ---- |
| |
===== Q3. Manipulation de plusieurs paramètres ===== | ===== Q.3 - Manipulation de plusieurs paramètres ===== |
| |
* A partir de ''check-arg.sh'', construisez ''check-multiple-args.sh'' afin qu'il réalise le même traitement en admettant un nombre multiple de paramètres. Vous sortirez avec la valeur ''1'' si au moins un des fichier passé en argument n'est pas régulier et ''0'' sinon. Pour ce faire, veuillez vous renseigner sur la nature de la variable ''$?'' et sur la commande ''exit''. | * A partir de ''check-arg.sh'', construisez ''check-multiple-args.sh'' afin qu'il réalise le même traitement en admettant un nombre multiple de paramètres. Vous sortirez avec la valeur ''1'' si au moins un des fichier passé en argument n'est pas régulier et ''0'' sinon. Pour ce faire, veuillez vous renseigner sur la nature de la variable ''$?'' et sur la commande ''exit''. |
---- | ---- |
| |
===== Q4. Manipulation des paramètres ayant une nature numérique ===== | ===== Q.4 - Manipulation des paramètres ayant une nature numérique ===== |
| |
* Ecrire un shell-script admettant un nombre variable de nombres en paramètre et affichant le plus petit d’entre eux | * Ecrire un shell-script admettant un nombre variable de nombres en paramètre et affichant le plus petit d’entre eux |
---- | ---- |
| |
===== Q5. Instructions répétitives ===== | ===== Q.5 - Instructions répétitives ===== |
| |
* Ecrire un shell-script, créant dans le dossier courant s’il n’existe pas déjà, un répertoire dont le nom est passé en premier argument. Il créera dans ce dossier 10 fichiers nommés « ''Un'' » à « ''Dix'' » contenant respectivement « ''file Un'' » à « ''file Dix'' » | * Ecrire un shell-script, créant dans le dossier courant s’il n’existe pas déjà, un répertoire dont le nom est passé en premier argument. Il créera dans ce dossier 10 fichiers nommés « ''Un'' » à « ''Dix'' » contenant respectivement « ''file Un'' » à « ''file Dix'' » |
---- | ---- |
| |
* Ecrire un script nommé ''table.sh'' permettant l’affichage des 15 premières lignes de la table de multiplication d’un nombre ''n'' passé en paramètre. | |
| |
---- | ===== Q.6 - Récapitulatif des bases ===== |
| |
===== Q6. Récapitulatif des bases ===== | |
| |
* Complétez et exécutez le script suivant (que vous nommerez ''get-line.sh'') | * Complétez et exécutez le script suivant (que vous nommerez ''get-line.sh'') |