Évaluation des expressions

Documents pareils
3IS - Système d'exploitation linux - Programmation système

Environnements informatiques

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

fc,-8 &.8!! diff?.! cho#

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Plan du cours. Historique du langage Nouveautés de Java 7

Client windows Nagios Event Log

Programmation système de commandes en C

1. Structure d'un programme FORTRAN 95

Initiation à la programmation en Python


Java Licence Professionnelle CISII,

STAGE IREM 0- Premiers pas en Python

Algorithmique et Programmation, IMA

Introduction à MATLAB R

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Arguments d un programme

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Premiers pas. Shell? Les processus vu comme des filtres. commandes

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Corrigé des TD 1 à 5

Perl Orienté Objet BioPerl There is more than one way to do it

Java Licence Professionnelle CISII,

Introduction à l Administration Systèmes et Réseaux

Examen Médian - 1 heure 30

Rappels d architecture

Licence Sciences et Technologies Examen janvier 2010

Programmer en JAVA. par Tama

Cours Programmation Système

Python Les fondamentaux du langage

Programmation système en C/C++

Introduction aux Systèmes et aux Réseaux

Le prototype de la fonction main()

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d algorithmique pour la classe de 2nde

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Les processus 2/54. Qu est-ce qu un processus? 3(6)/54. Se souvenir 1(1)/54. Le système de fichiers (exemple du disque dur)

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TD3: tableaux avancées, première classe et chaînes

Les Boitiers de Vote Electroniques (Clickers)

Cours Informatique Master STEP

Introduction aux Systèmes et aux Réseaux

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Organigramme / Algorigramme Dossier élève 1 SI

Installation de Zabbix

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Programmation C++ (débutant)/instructions for, while et do...while

TP1 - Prise en main de l environnement Unix.

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Nouvelle version de Zonecheck, la 3.0, avec tests DNSSEC

Table des matières Hakim Benameurlaine 1

Exercice sur les Dockers

Les clients GNU/Linux

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Tout d abord les pré-requis : Au menu un certain nombre de KB

Vue d ensemble de Windows PowerShell

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Dans l'article précédent, vous avez appris

Projet de programmation (IK3) : TP n 1 Correction

Outils pour la pratique

Première partie. Qu est-ce qu un script?

La photo numérique et les logiciels libres. Asie Photos

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Installation d'un serveur FTP géré par une base de données MySQL

TP1. Outils Java Eléments de correction

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

SAS Integration Technologies sur OS/390 et z/os : Object Spawner SAS 9.0 et IOM Server SAS 8.2

Initiation à LabView : Les exemples d applications :

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Nous avons utilisé plusieurs Script :

Sauvegarde sous MAC avec serveur Samba

Polycopié Cours Système d Exploitation I. Programme : Filière SMI S3

Architecture de la plateforme SBC

Installation d ORACLE 10g sous Debian Etch

V- Manipulations de nombres en binaire

Découverte de Python

TP WINDOWS 2008 SERVER - OUTILS DE SAUVEGARDE ET DE RESTAURATION

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Algorithmique et programmation : les bases (VBA) Corrigé

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Conventions d écriture et outils de mise au point

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

AWS avancé. Surveiller votre utilisation d EC2

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Attaques applicatives

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

PowerShell. Référence. Windows. Tyson Kopczynski. Réseaux et télécom. Programmation. Génie logiciel. Sécurité. Système d exploitation

sshgate Patrick Guiran Chef de projet support

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Propagation sur réseau statique et dynamique

Shell Bash Niveau débutant

Transcription:

Mémo p r o g r a m m a t i o n s h e l l Ce document rappelle les points principaux à retenir concernant la programmation pour shells Bourne et Korn. Évaluation des expressions variable= valeur affectation de variable avec la valeur Pas d'espace autour du signe égal! tableau [rang] =valeur affectation d'un rang du tableau avec la valeur. ${variable} remplacé par le contenu de la variable, ${ tableau [rang] } remplacé par le contenu du rang du tableau, ${variable-valeur} remplacé par la valeur si la variable n'est pas définie, ${variable=valeur} affectation de la variable si elle n'est pas définie, ${variable?valeur} afficher le message et tin du shell si variable indéfinie. ${#variable} est remplacé par la longueur du contenu de la variable, ${variable#motif} est remplacé par le contenu de la variable privé du plus court préfixe correspondant au motif, ${variable%motif} est remplacé par le contenu de la variable privé du plus court suffixe correspondant au motif, ${variable##motif} ${variable%%motif} suppression du préfixe ou suffixe le plus long possible. -utilisateur/ remplacé par le répertoire personnel de l'utilisateur, ab{c,d,e}fg est développé en abcfg abdfg abefg $(commande) remplacé par la sortie standard de la commande, $((expression)) remplacé par le résultat de l'évaluation arithmétique entière de l'expression. Protection des caractères spéciaux "$varl $var2" garde la cohésion de la chaîne en remplaçant les variables par leurs valeurs, 7-memo_shell.odt 1

`$var1 $var2` garde la chaîne inchangée (pas de remplacement), \$var le backslash protège le $ qui n'est pas interprété comme caractère spécial (pas de remplacement). Structures de contrôle Boucles while cmd1 ; do commandes Répète les commandes tant que cmd 1 renvoie vrai (0). until cmd1 ; do commandes Répète les commandes tant que cmd 1 renvoie faux. for variable in liste ; do commandes Répète les commandes en remplissant la variable avec les éléments successifs de la liste. break sort directement d ' une boucle for, while ou until. continue passe à l'itération suivante de la boucle. Tests if cmd_1 ; then cmd_2 elif cmd3 ; then cmd_4 else cmd_5 fi Si cmd_1 renvoie vrai exécute cmd_ 2. Sinon si cmd_3 renvoie vrai, exécute cmd_4, sinon exécute cmd_5. case expression in motif 1 ) cmd_1 ;; motif_2 motif_3 ) cmd_2 ;; * ) cmd_3 ;, esac Si l ' expression peut correspondre au motif_1, exécute cmd_1, sinon si elle correspond au motif_2 ou motif_3, exécute cmd_2, sinon exécute cmd_ 3. Fonctions fonction_1 ( ) { commandes... } définit la fonction_1. fonction_1 valeur 1 valeur 2... invocation de fonction _1 ; dans la fonction les arguments sont dans $1, $2... et leur nombre dans $# local variable déclare une variable locale à la fonction 7-memo_shell.odt 2

return valeur termine la fonction en revoyant la valeur en retour. Motifs du shell * n'importe quelle chaîne de caractères (même vide).? n'importe quel caractère, \* \? \\ Caractères *,?, \, [liste] Caractères l, i, s, t, e [b-e] Caractères b, c, d, e [^liste] N'importe quel caractère hors de la liste Redirections commande < fichier entrée standard depuis fichier, commande > fichier sortie standard vers fichier, commande > > fichier sortie standard ajoutée en fin de fichier, commande 2 > fichier sortie d ' erreur vers fichier, commande 2 > > fichier sortie d ' erreur ajoutée en fin de fichier, commande 2>&1 sortie d ' erreur identique à sortie standard, commande <<- ETIQUETTE lignes à envoyer vers l'entrée standard de la commande ETIQUETTE document en ligne envoyé vers l ' entrée standard. Exécution des commandes Ligne shebang #! /bin/sh en tout début de script. Pipeline commande commande commande sortie standard injectée dans l'entrée de la suivante Liste de pipelines pipeline ; pipeline (exécutions séquentielles) pipeline & pipeline (exécutions parallèles) pipeline && pipeline (exécutions dépendantes) pipeline pipeline (exécutions alternatives) Commandes composées { liste de pipelines } 7-memo_shell.odt 3

(regroupement de commandes) ( liste de pipelines ) (sous-shell) echo echo arguments affiche les arguments séparés par des espaces. -n supprime le saut de ligne final -e interprète les séquences spéciales. read read variables... remplit les variables avec les mots successifs de la ligne lue (séparateur : contenu de la variable IFS). Dernière variable reçoit tout ce qui reste. Par défaut, utilise variable REPLY. Renvoie faux en fin de fichier. exec exec commande remplace le (script) shell en cours par la commande. exec redirections applique les redirections indiquées au shell courant. source source script.script interprète le script dans le shell en cours. exit exit valeur termine le (script) shell courant en renvoyant la valeur. test test condition [ condition ] Laisser des espaces autour des crochets! Renvoie une valeur vraie ou fausse suivant la condition. Comparaisons de valeurs numériques : -eq... égale à... -ne... différente de... -lt (-le)... inférieure (ou égale) à... -gt (-ge)... supérieure (ou égale) à... Test sur les chaînes : n longueur non nulle z longueur nulle. Comparaisons de chaînes : =,! =, <, > Tests sur les fichiers : -a existence du fichier, -b périphérique m ode bloc, -c périphérique caractère, -d répertoire, -f fichier normal, -g bit Set-GID validé, -G appartenant au groupe de l'utilisateur, -h lien symbolique, -k bit Sticky validé, -N modifié depuis la dernière lecture, -O appartient à l ' utilisateur, - p tube n o m m é (fifo), -r peut être lu, -s taille non-nulle, - S socket, -u bit Set-UID validé, - w peut être écrit, -x peut être exécuté. Comparaisons de fichiers : -ef... même fichier physique que..., -nt... modifié plus récemment que..., -ot... modifié plus anciennement que... Test sur les descripteurs : 7-memo_shell.odt 4

-t est un terminal cd cd répertoire change de répertoire de travail, cd - revient au répertoire précédent, cd revient au répertoire de connexion. pwd affiche le répertoire de travail en cours. export export variable Transfère la variable du shell dans l'environnement qui sera transmis aux processus fils ultérieurs. env affiche le contenu de l ' environnement set set affiche les variables du shell et l'environnement, set options configure des paramètres du shell : -a exporter toutes les variables -u refuser les variables indéfinies -v afficher les lignes de commandes avant exécution -x afficher les développements avant exécution unset unset variable efface une variable. getopts while getopts "ab:c" variable ; do case $variable in a) echo "opt -a" ;; b) echo "opt -b, arg. $OPTARG" ;; c) echo "opt -c" ;; *) echo "opt invalide" ; exit 1;; esac shift $((OPTIND - 1)) echo "arguments restants :" echo "$@" exit 0 Analyse la ligne de commande en fonction d ' une liste d ' options. Si une option prend un argument (':' après sa lettre dans la liste), il est transmis dans OPTARG. Une fois toutes les options lues, le rang du premier argument restant est transmis dans OPTIND. shift shift n décale les arguments en ligne de commande de n rangs : $0 reste inchangé, $n+1 passe dans $1, $n+2 dans $2, etc. 7-memo_shell.odt 5