Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

sputnick a écrit :

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 hmm


-- 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 ? wink


-- 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 big_smile

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 hmm


-- 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 ..
big_smile
Non serieux .. merci  les gars ^^


PEACE LOVE UNITY                                                      FREE TIBET

Hors ligne