Script bash [Réglé]
lister des dossiers comportant des espaces
Logiciels / Autres logiciels

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
Je m'essaye sur un script bash , pour faire une interface à streamripper.
J'ai donc créé un menu (case $choix in .....), dans lequel l'utilisateur choisit d'abord une durée puis une web radio, qui est ensuite enregistrée par streamripper pendant le temps choisi.
En fin d'enregistrement, je voulais lister les fichiers musicaux créés.
J'ai donc introduit une variable dossier, dont le contenu varie à chaque choix de radio, ce qui aurait permis, en fin de script , d'afficher le contenu du répertoire concerné par la commande
Code BASH :
ls $dossier
Seulement le problème est que streamripper crée lui-même les répertoires finaux en fonction du nom de la radio et bien souvent, ceux-ci comportent des espaces ou des symboles non reconnus par le système.
Par exemple Classic Rock
Si la radio Classic Rock est choisie, la ligne "case" n° 1 devient :
Code BASH :
1) echo Enregistrement de 977 Classic Rock pendant $duree minutes streamripper $url1 -l $dur -d ~/EnregRadio/ dossier=~/EnregRadio/Classic\ Rock/
Et après esac :
Code BASH :
echo " Enregistrement terminé, voici la liste des fichiers créés :" ls $dossier
ce qui simplifiait beaucoup le script.
Mais ça ne passe pas ,résultat en console :
Code BASH :
Enregistrement terminé, voici la liste des fichiers créés : ls: impossible d'accéder à '/home/daniel/EnregRadio/Classic': Aucun fichier ou dossier de ce type ls: impossible d'accéder à 'Rock/': Aucun fichier ou dossier de ce type:
Par contre, sans passer par une variable pour le nom du dossier, cette commande fonctionne bien :
Code BASH :
ls ~/EnregRadio/Classic\ Rock/
Mais ça oblige à retaper plusieurs fois la même commande .
Bon , en fait ça n'a pas une importance capitale, mais si on peut faire simple .....
![:] :]](/images/smileys/8.gif)
Il y a un souci au niveau de la variable du répertoire....
Donc si ça intéresse quelqu'un merci d'avance....
EDIT Encore pire : ls /home/daniel/EnregRadio/Radio\ Paradise\ (128k\ mp3) même non utilisé dans une variable, ne fonctionne pas à cause des parenthèses !
Édité par DéBé Le 11/05/2022 à 18h21
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Je regarde ça dès que j'ai le temps. Demain matin peut-être
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
Pas d'urgence.
je peux téléverser le script si besoin.
Édité par DéBé Le 11/05/2022 à 20h52
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Je me demande si dans le "ls", il ne faudrait pas encadrer la variable par des guillemets de façon à échapper les caracrères spéciaux de manière "automatique".
https://cyberlearn.hes-so.ch/mod/page/view.php?id=272944
Édité par nic80 Le 11/05/2022 à 21h04

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
1) toujours utiliser les accolades pour les variables.
Bon : ${ma_variable}
Mauvais : $ma_variable
2) toujours utiliser la syntaxe $(sous-commande) plûtôt que `sous-commande`
3) lorsqu'on travaille avec des chaines de caractères contenant des espaces, il faut toujours définir avec des simples quotes ' (apostrophe) ou doubles quotes " (guillemets). Les guillemets permettent l'interpretation des variables.
Par exemple:
my_var=123
echo '${my_var}'
echo "${my_var}"
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
J'avais testé avec les apostrophes, puis avec les guillemets mais ça ne fonctionnait pas mieux.
Je n'avais pas trouvé la solution avec les guillemets et les parenthèses.
Code BASH :
ls "${dossier}"
fonctionne impeccablement.
Merci à jybz et nic80
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
J'en ai vu du bash, si tu souhaites une revue, n'hésites pas.
Colle ton code entre les balises
Code TEXT :
[code=bash] #!/bin/bash echo "ton code" exit 0 [/code]
et je regarde ça.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

DéBé Membre non connecté
-
- Voir le profil du membre DéBé
- Inscrit le : 30/01/2010
- Groupes :
Jybz :
J'en ai vu du bash, si tu souhaites une revue, n'hésites pas.
J'en ai vu du bash, si tu souhaites une revue, n'hésites pas.
Pour le moment , j'ai encore à peaufiner ....

Mais je retiens ta proposition
Merci
Finistère - Matériel : Desktop :Mga 9 x86-64 sur SSD 120 Go Plasma5 - Intel I5-6500 3,2 Ghz /Ram 8 Go --Lenovo T 410 Mga 9 x86-64 Plasma 5 Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire.” Albert Einstein
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie