#1 Le 06/06/2021, à 09:27
- PowaBanga
inclure les espaces dans une boucle
Salut à tous,
J'ai une liste, de ce type
"D/-\ W/-\Y"
"AEX10"
"BigBird [Mod DB]"
"Bork"
"Fenris Wolf"
"FuzzDad"
"Ghegs"
"Koobazaur"
"Liebgott"
"LoganTheRed"
"Moldiver"
"Pestilence"
"px3stick"
"snow_yoshi"
"Spite Engine"
"Verhaden"
"Wojcieszy"
Et donc je voudrais envoyer chaque ligne dans une notification.
Le souci c'est que ma boucle sépare chaque variable par un espace et non un retour à la ligne.
J'ai essayé en ajoutant les apostrophes dans mon fichier, mais rien n'y fait...
for i in $(cat $HOME/.cache/liste)
do
notify-send "'$i' is online"
done
si je fait un "cat $HOME/.cache/liste | sed 's/ /\\ /g'
ça m'ajoute juste un antislash dans ma notif
Hors ligne
#2 Le 06/06/2021, à 09:47
- jplemoine
Re : inclure les espaces dans une boucle
Il faut utiliser IFS pour dire que le séparateur est le retour charriot seulement.
SAVEIFS=$IFS
IFS=$'\n'
for i in $(cat $HOME/.cache/liste)
do
notify-send "'$i' is online"
done
IFS=$SAVEIFS
Pour faire propre, on sauvegarde la valeur et on la restaure.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Déconnecté jusqu’à nouvel ordre
Hors ligne
#3 Le 06/06/2021, à 11:43
- MicP
Re : inclure les espaces dans une boucle
Bonjour
Ou alors, même sans encadrer le contenu de chaque ligne par des apostrophes :
michel@debsid:~$ cat $HOME/.cache/liste
D/-\ W/-\Y
AEX10
BigBird [Mod DB]bash
Bork
Fenris Wolf
FuzzDad
Ghegs
Koobazaur
Liebgott
LoganTheRed
Moldiver
Pestilence
px3stick
snow_yoshi
Spite Engine
Verhaden
Wojcieszy
michel@debsid:~$
…en utilisant la commande interne read du bash
while read; do notify-send "$REPLY is online"; done < $HOME/.cache/liste
Présenté autrement (dans un script) :
while read; do
notify-send "$REPLY is online"
done < $HOME/.cache/liste
Dernière modification par MicP (Le 06/06/2021, à 11:51)
Hors ligne
#4 Le 06/06/2021, à 13:46
- Watael
Re : inclure les espaces dans une boucle
c'est la seule vraie bonne façon de lire un fichier, en préservant les éventuels espaces et/ou tabulations au début des lignes.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne