====================
== Le blog de dup ==
====================

bash

bash

Qui n'utilise pas | n'a pas réalisé des scripts en bash ?? Ces petites bêtes sont très utiles ! Lorsqu'il s'agit de parser des fichiers les coreutils montrent toute leur puissance (merci cut, sed, head, tail, ....). Depuis quelques temps je cherchais comment faire pour lire deux variables d'une même ligne d'un fichier. J'ai fini par trouver dans un script d'initialisation de la debian (je crois) la manière de le faire. J'ai utilisé cette méthode dans un petit script qui me charge (pour ma RIM) les modules PCI nécessaires. Voici la partie qui charge tous les modules associés au bus pci (excepté ceux dédiés au son ainsi que tous les modules se terminant par 'fb' (allez donc savoir pourquoi ;)).

1lspci -n | grep -v " 0401:" | cut -d':' -f3,4 | sed "s/ //" | cut -d' ' -f1 | sed "s/:/ /" | while read vendor model; do for module in $(grep "[a-zA-Z0-9]*[ ]*0x0000$vendor 0x0000$model" /lib/modules/$kernel/modules.pcimap | cut -d' ' -f1| sed "s/ //g" | grep -v "fb$"); do echo "Loading module $module :" | tee -a $module\_log echo "$module" >>/etc/modules /sbin/modprobe $module >dev/null 2>&1 | tee -a $module\_log echo " "; done; done;

Tout est dans le while read vendor model; do (et le pipe juste avant!!)