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 24/08/2020, à 22:38

jlfh0816

Re : lanceur pour retirer sans risque une clé usb

@kamaris

Merci beaucoup de ta patience pour toutes ces explications !   smile


kamaris a écrit :

Il faut passer à lsblk un nom de périphérique valide.
Pour voir tes noms de périphériques, regarde le retour de lsblk dans le terminal (première colonne).

C'est tout bon maintenant en précisant /dev/sdb dans mon petit script :

model=$(lsblk -no model /dev/sdb)
echo $model
notify-send "summary" -t 10000 "$model"

- l'echo me retourne bien Cruzer Blade (c'est le modèle de ma clef usb) :

jlfh0816 @ Voyager1804  ~/.scripts
└─ $ ▶ ./essai.sh
Cruzer Blade

- et le message de notification m'affiche bien également Cruzer Blade :

1598307827.png


kamaris a écrit :

Ton corps de message contient littéralement $model au lieu de sa valeur, car tu as utilisé des guillemets simples au lieu des doubles

Oui, tu as tout à fait raison, j'aurai dû mieux vérifier ma syntaxe.
En fait, cette histoire de guillemets pour le corps du message n'est pas claire car j'ai remarqué (à plusieurs reprises) que, lorsqu'il n'y a pas variable, il lui arrive de ne s'afficher que s'il est entouré de guillemets simples. Par contre, effectivement, lorsque ce corps de message doit afficher la valeur d'une variable, il nécessite des guillemets doubles.
Difficile à comprendre ...


kamaris a écrit :

Dans mon script, le $2 (second argument) de la fonction power_off() correspond à $last_device dans le corps le script, car j'appelle la fonction par

power_off "$1" "$last_device"

$1 est le premier argument du script (l'option éventuelle -v), également passé en premier argument à power_off().

Alors là, pour le béotien que je suis, j'avoue ne pas avoir tout compris car si j'ai bien repéré $1 dans ton script ... il apparaît après l'utilisation de $2 (c'est normal ?).
Bon, j'ai largement de quoi potasser les manuels de bash script !!!  tongue

Encore merci de ta patience kamaris ... et à toi aussi MicP !


edit: je viens de comprendre pour $2 avant $1 : en fait, c'est dans la déclaration de la fonction que j'avais cette impression car, dans le fil du script ensuite, $1 est bien avant $2.... désolé de ne pas avoir saisi tout de suite !  roll

Dernière modification par jlfh0816 (Le 24/08/2020, à 22:50)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#27 Le 25/08/2020, à 07:45

kamaris

Re : lanceur pour retirer sans risque une clé usb

jlfh0816 a écrit :

En fait, cette histoire de guillemets pour le corps du message n'est pas claire car j'ai remarqué (à plusieurs reprises) que, lorsqu'il n'y a pas variable, il lui arrive de ne s'afficher que s'il est entouré de guillemets simples. Par contre, effectivement, lorsque ce corps de message doit afficher la valeur d'une variable, il nécessite des guillemets doubles.
Difficile à comprendre ...

En fait, quand on écrit une ligne de commande, il faut toujours penser qu'il y a deux étapes :
- l'interprétation de cette ligne de commande par le shell ;
- l'interprétation des arguments de cette ligne de commande par la commande concernée (ici notify-send).

Ce que reçoit la commande invoquée n'est donc pas ce qui est écrit, mais ce qui sort de l'interprétation de ce qui est écrit par le shell.
Voir la section « Simple Command Expansion » de man bash pour un exposé synthétique de cette interprétation.
Concernant les guillemets, le shell les retire (quote removal) en développant ou pas les variables qu'ils contiennent selon qu'il s'agit de guillemets doubles ou simples.
Un bon moyen de voir à quoi ressemble la commande effectivement lancée, est d'utiliser set -x (cf. help set).

jlfh0816 a écrit :

edit: je viens de comprendre pour $2 avant $1 : en fait, c'est dans la déclaration de la fonction que j'avais cette impression car, dans le fil du script ensuite, $1 est bien avant $2.... désolé de ne pas avoir saisi tout de suite !  roll

Rq : ces $1 et $2 sont à ne pas confondre avec les $1 et $2 dans

done < <(lsblk -Ppno kname,pkname,hotplug,mountpoint \
         | awk '{for (i=1;i<=NF;i++) gsub("[^\"]+=\"|\"","",$i)}
                (+$3 || p) && $4{print $1" "$2; p=0; next}
                +$3 && $2{p=1; next} {p=0}')

car là, ça désigne des champs dans awk, ce qui est encore autre chose ! big_smile

Hors ligne

#28 Le 25/08/2020, à 11:01

jlfh0816

Re : lanceur pour retirer sans risque une clé usb

@kamaris

Que dire devant tant de pédagogie, de patience et de bienveillance .... si ce n'est un grand merci ! big_smile
Bon, dans la pratique, je prendrai quand même deux comprimés d'aspirine avant de me plonger dans les méandres des manuels de bash/shell : on n'est jamais assez prudent !
Et de toute façon, il faudra que je m'en trouve en français si possible, ce sera nettement plus constructif et agréable pour tenter de saisir toutes ces subtilités de syntaxe...


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#29 Le 25/08/2020, à 15:29

kamaris

Re : lanceur pour retirer sans risque une clé usb

De rien wink
Un lien pour les pages de man en français : https://man.developpez.com/manpage-complet/
Et notamment : https://man.developpez.com/man1/bash/

Hors ligne

#30 Le 25/08/2020, à 22:07

jlfh0816

Re : lanceur pour retirer sans risque une clé usb

@kamaris

cool   merci pour les liens en français !

Dernière modification par jlfh0816 (Le 25/08/2020, à 22:09)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne