Input Field Separators

IFS, ou input field separators[1] (ou internal field separators), est une variable de shell Unix (bash, sh, etc.) définissant les séparateurs de champ reconnus par l'interpréteur.

Cette variable, nommée IFS, est souvent qualifiée improprement de variable d'environnement, ce qui est inexact ; il serait plus rigoureux de parler de variable de shell (ou de variable système).

Valeur habituelle modifier

Par défaut, IFS définit comme séparateurs 3 caractères :

  1. L'espace
  2. La tabulation (\t)
  3. Le saut de ligne (\n).

Pour vérifier la valeur de la variable, il suffit de taper la commande :

set | grep ^IFS=

Le résultat habituel est :

IFS=$' \t\n'

On aura parfois besoin de redéfinir cette valeur, par exemple dans le cas où on ne souhaite pas que l'espace serve de séparateur (cas typique : on a à traiter des fichiers dont les noms contiennent des espaces) : IFS=$'\n' permet de ne traiter que les sauts de ligne comme internal field separator.

Références modifier

  1. « Shell Command Language », sur pubs.opengroup.org (consulté le )