Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Accès aux éléments de la baie

Alors à quoi servent les tableaux ? Tout comme de nombreuses tâches de gestion de données peuvent être effectuées avec un tableur, de nombreuses tâches de programmation peuvent être effectuées avec des tableaux.

Prenons un exemple simple de collecte de données et de présentation. Nous allons construire un script qui examine les heures de modification des fichiers dans un répertoire spécifié. À partir de ces données, notre script produira un tableau indiquant à quelle heure du jour les fichiers ont été modifiés pour la dernière fois. Un tel script pourrait être utilisé pour déterminer quand un système est le plus actif. Ce script, appelé heures, produit ce résultat :


image

[moi@linuxbox ~]$ heures .


heure

Fichiers

heure

Fichiers

----

-----

----

-----

00

0

12

11

01

1

13

7

02

0

14

1

03

0

15

7

04

1

16

6

05

1

17

5

06

6

18

4

07

3

19

4

08

1

20

1

09

14

21

0

10

2

22

0

11

5

23

0

Fichiers totaux = 80


Nous exécutons le heures programme, en spécifiant le répertoire courant comme cible. Il produit un tableau indiquant, pour chaque heure de la journée (0-23), combien de fichiers ont été modifiés pour la dernière fois. Le code pour produire ceci est le suivant :



#! / Bin / bash

# heures : script pour compter les fichiers par utilisation du temps de modification () {

echo "utilisation : ${0##*/} répertoire" >&2

}

#! / Bin / bash

# heures : script pour compter les fichiers par utilisation du temps de modification () {

echo "utilisation : ${0##*/} répertoire" >&2

}


# Vérifiez que l'argument est un répertoire si [[ ! -d $1 ]]; alors

utilisation sortie 1

fi


# Initialiser le tableau

pour i dans {0..23} ; faire heures[i]=0 ; terminé


# Collecter des données

pour i dans $(stat -c %y "$1"/* | cut -c 12-13); faire j=${i/#0}

((++heures[j])) ((++compte))

fait


# Afficher les données

echo -e "Heure\tFichiers\tHeure\tFichiers" echo -e "----\t-----\t----\t-----" pour i dans {0} ; faire

j=$((je + 12))

printf "%02d\t%d\t%02d\t%d\n" $i ${heures[i]} $j ${heures[j]} terminé

printf "\nTotal des fichiers = %d\n" $count

# Vérifiez que l'argument est un répertoire si [[ ! -d $1 ]]; alors

utilisation sortie 1

fi


# Initialiser le tableau

pour i dans {0..23} ; faire heures[i]=0 ; terminé


# Collecter des données

pour i dans $(stat -c %y "$1"/* | cut -c 12-13); faire j=${i/#0}

((++heures[j])) ((++compte))

fait


# Afficher les données

echo -e "Heure\tFichiers\tHeure\tFichiers" echo -e "----\t-----\t----\t-----" pour i dans {0} ; faire

j=$((je + 12))

printf "%02d\t%d\t%02d\t%d\n" $i ${heures[i]} $j ${heures[j]} terminé

printf "\nTotal des fichiers = %d\n" $count


Le script se compose d'une fonction (usage) et un corps principal avec quatre sections. Dans la première section, nous vérifions qu'il existe un argument en ligne de commande et qu'il s'agit d'un répertoire. Si ce n'est pas le cas, nous affichons le message d'utilisation et sortons.

La deuxième section initialise le tableau heures. Il le fait en attribuant à chaque élément une valeur de zéro. Il n'y a pas d'exigence particulière pour préparer les tableaux avant utilisation, mais notre script doit s'assurer qu'aucun élément n'est vide. Notez la manière intéressante dont la boucle est construite. En utilisant l'expansion de l'accolade ({0...23}), nous sommes capables de générer facilement une séquence de mots pour le en commander.

La section suivante rassemble les données en exécutant le état programme sur chaque fichier du répertoire. Nous utilisons cut pour extraire l'heure à deux chiffres du résultat. À l'intérieur de la boucle, nous devons supprimer les zéros non significatifs du champ de l'heure, car le shell essaiera (et échouera finalement) d'interpréter les valeurs « 00 » à « 09 » comme des nombres octaux (voir le tableau 34-2). Ensuite, nous incrémentons la valeur de l'élément du tableau correspondant à l'heure du jour. Enfin, on incrémente un compteur (compter) pour suivre le nombre total de fichiers dans le répertoire.

La dernière section du script affiche le contenu du tableau. Nous sortons d'abord quelques lignes d'en-tête, puis entrons dans une boucle qui produit quatre colonnes de sortie. Enfin, nous sortons le décompte final des fichiers.


Meilleur système d'exploitation Cloud Computing chez OnWorks :