variable d'environnement spécial IFS, appelé le séparateur de champ interne (séparateur de champ interne)
Par défaut, bash shell par défaut suivant le caractère comme séparateur de champ à l' intérieur:
- blanc
- languette
- Newline
Lire un fichier
Vous pouvez modifier temporairement la valeur de la variable d'environnement IFS pour limiter le champ caractère délimiteur est traité comme le shell bash.
La reprise ne reconnaît newline, IFS = $ « \ n » .
Voici tout d' abord créer un fichier comme suit:
$ États CAT
Alabama
Alaska
Arizona
Delaware
Ensuite , créez un script nommé le test
$ CAT test
#!/bin/bash
# reading values from a file
file="states"
IFS=$'\n'
for state in $(cat $file)
do
echo "Visit beautiful $state"
done
Exécuter des scripts de test, vous pouvez obtenir la sortie suivante
Visit beautiful Alabama
Visit beautiful Alaska
Visit beautiful Arizona
Visit beautiful Delaware
Remarque: Si vous souhaitez spécifier une pluralité de caractères IFS, tant qu'ils sont affectés à la ligne sur la ligne série
tels que IFS = $ « \ n »:; " sauts de ligne va, deux points, virgule, des guillemets doubles comme séparateurs de champs.
fichier de traitement en boucle
En modifiant l'IFS, en constante évolution séparateur de champ, il peut être utilisé dans le fichier de traitement en boucle
pour créer un nouveau fichier:
$ Villes CAT
Shandong:jinan
heilongjiang:haerbin
fujian:fuzhou
yunan:kunming
Ensuite , créez un script nommé test2
$ CAT test2
#!/bin/bash
#city in province
IFS=$'\n'
for city in $(cat cities)
do
echo City is $city
IFS=:
for value in $city
do
echo " $value"
done
done
Test2 exécution du script, vous pouvez obtenir le résultat suivant:
City is Shandong:jinan
Shandong
jinan
City is heilongjiang haerbin
heilongjiang
haerbin
City is fujian fuzhou
fujian
fuzhou
City is yunan kunming
yunan
kunming
A partir des exemples ci - dessus, vous pouvez voir un réglage de saut de ligne IFS départ, pour la lecture de chaque ligne de données
suivies par deux points, pour séparer chaque ligne de chaque champ dans les données en modifiant les IFS, le dernier cycle d' affichage imbriqué.