#26 Le 13/04/2010, à 22:56
- AnsuzPeorth
Re : [ Résolu ]-BAsh - Créer une list dans un script
La forme:
[[ $var =~ truc ]]
Cherche le pattern truc dans la variable var. Donc trucmuche, trucbidule seront matché qd même !
De plus, en utilisant un tableau, tu ne peux ajouter qqlechose pour confirmer le pattern (un espace par exemple )
~$ tab=( /tmp/truc /usr/machin )
~$ [[ ${tab[@]} =~ /tmp ]] && echo ok
ok
~$ var='/tmp/truc /usr/machin ' #espace après chaque path
~$ [[ "$var" =~ '/tmp ' ]] && echo ok #espace après pattern de recherche
~$
Si tu cherches la rapidité d'execution , essaie d'utiliser cette forme. Un simple grep est le traitement est beaucoup, beaucoup plus long (j'ai fait des tests dans ce sens là pour un script il y a un moment, c'est même impressionnant le résultat !)
EDIT: pour ta proposition d'utiliser basename, ca fait une commande de plus, ajoute un caractère si il faut, ou un espace en utilisant une variable. Sinon, plutot que basename, utilise la substitution bash, c'est plus rapide
Dernière modification par AnsuzPeorth (Le 13/04/2010, à 23:02)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#27 Le 14/04/2010, à 00:08
- UUBBUU_USER
Re : [ Résolu ]-BAsh - Créer une list dans un script
Ok .... Merci ansuzpeorth ... j'ai tester et vérifié les possible erreurs .... dans mon cas il ne devrait pas y en avoir ....mais bon vaut mieux prévoir les éventualités ..
et donc je vais faire comme cela
~$ var='/tmp/truc /usr/machin ' #espace après chaque path
~$ [[ "$var" =~ '/tmp ' ]] && echo ok #espace après pattern de recherche
PEACE LOVE UNITY FREE TIBET
Hors ligne
#28 Le 14/04/2010, à 10:34
- Totor
Re : [ Résolu ]-BAsh - Créer une list dans un script
Bonjour,
Une autre solution :
if [[ "${mount}" && grep -qx " ${mount}" < <(echo -e " ${VITAL_SYSTEM_LIST[@]/%/\n}") ]] ; then
-- Lucid Lynx --
Hors ligne
#29 Le 14/04/2010, à 11:14
- sputnick
Re : [ Résolu ]-BAsh - Créer une list dans un script
Un poil tordu ton truc totor wink
Si on va par là :
if printf '%s\n' ${VITAL_SYSTEM_LIST[@]} | grep -qx "${mount:?}"; then
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#30 Le 14/04/2010, à 14:18
- UUBBUU_USER
Re : [ Résolu ]-BAsh - Créer une list dans un script
... Merci A tous ...
C'est fou les possibilités en bash ..
Je sais même plus laquelle choisir ..
pour ma variable dev déja traiter je vai prendre celle-là .. comme ça je supprime la commande "basename"pour le nom de mon " device "
device=$(hal-get-property --udi $udi --key block.device)
if [[ ! $ALREADY_LIST =~ ($device ) ]] ; then
......
....
ALREADY_LIST+=($device )
fi
Sinon pour les listes a proprement parlés .... je suis pas sur ...
je vais faire quelques test.
edit1: jpense que je vais partir sur la même formule !!!
Dernière modification par UUBBUU_USER (Le 14/04/2010, à 14:20)
PEACE LOVE UNITY FREE TIBET
Hors ligne
#31 Le 14/04/2010, à 16:56
- Totor
Re : [ Résolu ]-BAsh - Créer une list dans un script
Un poil tordu ton truc totor wink
pourquoi tordu ? astucieux je dirais plutôt !
Sinon, c'est vrai qu'il y a printf... j'y pense jamais
-- Lucid Lynx --
Hors ligne
#32 Le 14/04/2010, à 16:59
- sputnick
Re : [ Résolu ]-BAsh - Créer une list dans un script
Ben niveau lisibilité et maintenabilité du code quoi ^^
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#33 Le 14/04/2010, à 17:02
- Totor
Re : [ Résolu ]-BAsh - Créer une list dans un script
c'est pas à ça que servent les commentaires ?
-- Lucid Lynx --
Hors ligne
#34 Le 14/04/2010, à 18:43
- UUBBUU_USER
Re : [ Résolu ]-BAsh - Créer une list dans un script
Bon bah .. désoler de casser Votre Délire .. mais je sais pas pourquoi ... aprés tant de corrections .. plus rien ne marche !!!! enfin .. voila :
Je Suis Un Noob !!
Donc ni l'une ni l'autre fonctionne ..... ça me renvoie une erreur ^ ...
ps .. je sens que je suis bon pour reprendre du début ^^
edit : c'est en forgeant que l'on devient forgeron
edit 3 .. c'est bon j'ai trouvé mes erreurs !!
Dernière modification par UUBBUU_USER (Le 15/04/2010, à 13:58)
PEACE LOVE UNITY FREE TIBET
Hors ligne
#35 Le 15/04/2010, à 14:12
- UUBBUU_USER
Re : [ Résolu ]-BAsh - Créer une list dans un script
Allez ... sinon .. connaissez vous un moyen de récupérer le Type de Bus a partir du block-device ?
genre /dev/sda1 a un bus pci
ou /dev/sdc5 a un bus usb
dans les vieilles version de HAL on pouvait .....
j'ai Tester avec /sbin/udevadm .. mais pas vraiment probant .
ps : merci ^^
Dernière modification par UUBBUU_USER (Le 15/04/2010, à 14:13)
PEACE LOVE UNITY FREE TIBET
Hors ligne
#36 Le 15/04/2010, à 14:40
- sputnick
Re : [ Résolu ]-BAsh - Créer une list dans un script
Comme ça vite fait :
Funk(){ file /dev/disk/by-path/* | awk -F'-' -v var=$1 '$0 ~ var{print $4}'; }
Funk sda1
scsi
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#37 Le 15/04/2010, à 16:27
- Totor
Re : [ Résolu ]-BAsh - Créer une list dans un script
J'ai essayé de prendre la solution de sputnick à l'envers.
C'est à dire : chercher le lien symbolique se trouvant dans le dossier /dev/disk/by-path pointant vers le device à identifier plutôt que de traiter tous les liens symboliques se trouvant dans le dossier /dev/disk/by-path pour trouver le device.
Et là... pas moyen de trouver un outil faisant l'inverse de readlink ou symlinks (si quelqu'un en connait un, je suis preneur).
Cependant, la boite à outil "find" possède une option s'en apparentant.
Donc voici une solution :
find /dev/disk/by-path -lname "*sda1"|awk -F- ' { print $4 } '
Mais au final, cela revient au même puisque find traite tous les fichiers du dossier en question
-- Lucid Lynx --
Hors ligne
#38 Le 15/04/2010, à 17:25
- sputnick
Re : [ Résolu ]-BAsh - Créer une list dans un script
J'ai trouvé autre chose :
Funk(){ var=$(readlink -f /sys/class/block/${1#/dev/} | cut -d/ -f6); [[ $var == host* ]] && echo pci || echo ${var%[0-9]}; }
Dernière modification par sputnick (Le 15/04/2010, à 17:34)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#39 Le 15/04/2010, à 19:55
- UUBBUU_USER
Re : [ Résolu ]-BAsh - Créer une list dans un script
Sputnick Is winner .... Nickel la fonction ..
Honnêtement je ne connaissais pas readlink ...
Et je ne pensais même pas que l'on pouvais obtenir des infos depuis les symlinks de /Sys ..
Bon, je sais je suis un noob ..
Non serieux .. merci les gars ^^
PEACE LOVE UNITY FREE TIBET
Hors ligne