Objectif : automatiser des tâches
Fichier texte (attention a l'encodage)
Executable par un interpréteur
Retournant dans tous les cas une valeur (best practice)
code de bon fonctionnement
différenciation des erreurs si possible !
ensemble de commande et d'outil d'échange avec le système Ensemble de commandes
Exemple de shell:
bash : bourne again shell : shell GNU
csh, tcsh : shels proche du C de Berkeley
Script élémentaires
avec les guillemets on interprete le contenu, et cela ne représente qu'une donnée
exit 0 = variable par défaut quand ça c'est bien passé
on retour 0 car il n'y a qu'un succès alors que les erreurs peuvent être multiples.
Pour rendre le script exécutable et le lancer :
Exécution d'une commande
Exploitation de la chaîne retournée
Non typées, non déclarées
référencement de la valeur : $
variable en lecture readonly
exploitation des variables d'environnement
$USER (nom current user), $PWD(print work directory), $HOME (chemin du home du current user)....
Liste des variables d'environnement : env
Exemple de variable
Variables prédéfinies
valeur de sortie de la dernière commande
Nième argument passé au Script
liste des arguments à partir de $1
Exemple var2.sh
Opérations sur les Variables
Déclaration globale ou individuelle
@ affiche la totalité du tableau
Pour la taille : demande de la taille de la structure de données
Deux syntaxes
Tests sur les types de fichiers
Tests sur les valeurs ( chaînes, numériques )
Tests sur les fichiers
Expressions logiques
Tests des valeurs
Chaine de caractères
z / -n Chaîne vide / non vide
!= / n Différentes identiques
Valeurs numériques
-eq / -ne Égal / différent
-lt / -gt Strictement inférieur / strictement supérieur
-le / -ge Inférieur ou égal/ supérieur ou égal
Structure conditionnelles if
Généralement on commence le script par vérifier if [ $# -ne 1 ] pour vérifier si les paramètres correspondent.
Structure conditionnelles connaisse
Structures itératives for
Structures itératives while / until
While :
Until :
La gestion des flux
En UNIX tout est fichier.
Utilisation des flux
< entrée standard depuis un fichier
2>&1 redirection de la sortie d’erreur vers la sortie standard
Redirection dans un fichier
> écriture et création du fichier
Le cas du clavier
Ecriture de scripts interactifs
Affectation d’un liste de variables
Exploitation d'un fichier en sortie
Exploitation de la redirection
Ecriture avec echo dans le fichier
Lecture d'un fichier
Lecture de la totalité d’un fichier dans une variable
Exploitation de la redirection
Lecture ligne à ligne
Utilisation de
Eléments de structuration de programmes
Pas toujours ( bien ) utilisées
Script souvent == programmation « sale »
Les fonctions : déclaration et appel
Les fonctions : paramètres
Pas de déclaration dans le prototypage
Exploitation des paramètres comme pour les scripts $1 , $2 …
Travail sur les chaînes
Possibilité de réaliser des opérations spécifiques
Modification du symbole délimiteur
Simplification des programmes
Evite l’usage d’expressions régulières
Attention dans le cas des séparateurs
Persistance de la modification
Extraction
Un nombre définit de caractères
Troncature
Un nombre définit de caractères
Exemple :
Notion de séparateur
Définition de la variable spéciale $IFS (Internal Field Separator)
Utilisé pour effectuer les opérations standard de lecture
Valeur par défaut (configurable et dépendante du système)
Redéfinition possible de l’IFS
Permet le split implicite
Exemple :
IFS et fichiers
Autour du réseau
Commandes réseau
Commandes respectant les protocoles réseau
Intégrable dans des scripts
Définition de l'ensemble des commandes
Dans des fichiers de configuration
Outil lié au requêtes
Test d’existence (en HTTP on utilise le verbe HEAD)
Permet
De télécharger en ligne de commande
D’intégrer le téléchargement dans les scripts
Exploitation des protocoles
Erreur d’authentification SSL
Erreur d’authentification
Erreur retournée par le serveur
Bibliothèque de requête pour les URL
commande de transfert de et vers un serveur
Accès et création de ressource sur un serveur
Exploitable en environnement REST
Protocoles supportés : FTP(S) , HTTP(S), SMPT(S), POP(S), IMAP(S), SCP, SFTP, SMB ...
Conçu pour fonctionner sans inter-actions
Basé sur libcurl
intégration dans les langages de script
Utilisation HTTP
Utilisation FTP