Flux standard et arguments

Introduction à la programmation Bash

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

En script Bash, votre programme a trois « flux » :

  • STDIN (entrée standard). Un flux de données vers le programme
  • STDOUT (sortie standard). Un flux de données hors du programme
  • STDERR (erreurs standard). Les erreurs du programme

Par défaut, ces flux proviennent du terminal et y écrivent.

Vous pouvez voir 2> /dev/null dans des appels ; on y redirige STDERR pour être supprimé. (1> /dev/null serait STDOUT)

Introduction à la programmation Bash

STDIN-STDOUT, en graphique

Voici une représentation graphique des flux standard, en utilisant le pipeline créé plus tôt :

Schéma des flux standard

Introduction à la programmation Bash

Exemple STDIN

Supposons un fichier texte (sports.txt) avec 3 lignes de données.

football
basketball
natation

La commande cat sports.txt 1> new_sports.txt lit les données du fichier et écrit STDOUT dans un nouveau fichier. Voyez ce qui arrive si vous exécutez cat new_sports.txt

football
basketball
natation
Introduction à la programmation Bash

STDIN vs ARGV

Un concept clé en Bash est celui des arguments

Les scripts Bash peuvent recevoir des arguments en ajoutant un espace après l'appel d'exécution.

  • ARGV est le tableau de tous les arguments fournis au programme.
  • Chaque argument est accessible par la notation $ : le premier $1, le second $2, etc.
  • $@ et $* donnent tous les arguments d'ARGV
  • $# donne le nombre d'arguments
Introduction à la programmation Bash

Exemple ARGV

Voyons un script d'exemple (args.sh) :

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introduction à la programmation Bash

Exécution de l'exemple ARGV

Exécutez maintenant bash args.sh one two three four five

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introduction à la programmation Bash

Passons à la pratique !

Introduction à la programmation Bash

Preparing Video For Download...