Pages : 1
#1 Le 05/11/2021, à 01:39
- balinux
Aide pour un script bash
Bonjour ou bonsoir a tous j'ai fait un petit script pour apprendre et m'amuser je voudrai le simplifier . Pouvez-vous me conseillé ? please
#! /bin/bash
clear
echo "################################################################################"
echo "1. Voulez-vous lister les séries ? "
echo "2. Quitter "
read Sortie
case "$Sortie" in
1) ;;
2) clear && exit ;;
esac
echo "################################################################################"
echo " Quel séries voulez-vous regarder ? "
echo "1. Sliders "
echo "2. Validé "
echo "3. Quitter "
read Sortie
case "$Sortie" in
1) echo "################################################################################"
echo " Sliders - Quel saissons voulez-vous regarder ? "
echo "1. Sliders - S01 "
echo "2. Quitter "
read Sortie
esac
case "$Sortie" in
1) echo "################################################################################"
echo " Sliders - Quel épisodes voulez-vous regarder ? "
echo "1. 01 Le Monde selon Lénine.avi "
echo "2. 02 Un monde hippie.avi "
echo "3. 03 Un monde très British.avi "
echo "4. 04 Un monde sans maladie.avi "
echo "5. 05 La fin du monde.avi "
echo "6. 06 Le monde de l'intellect.avi "
echo "7. 07 Un monde au féminin.avi "
echo "8. 08 Un monde pour Rembrandt.avi "
echo "9. 09 Un monde parfait.avi "
echo "10. Quitter "
read Sortie
case "$Sortie" in
1) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/01* ;;
2) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/02* ;;
3) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/03* ;;
4) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/04* ;;
5) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/05* ;;
6) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/06* ;;
7) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/07* ;;
8) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/08* ;;
9) exec vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/09* ;;
10) clear && exit ;;
esac ;;
2) ;;
3) clear && exit ;;
esac
Dernière modification par balinux (Le 05/11/2021, à 04:11)
Hors ligne
#2 Le 05/11/2021, à 02:45
- Watael
Re : Aide pour un script bash
salut,
il faut réfléchir en terme de Base de Données.
pas forcément un gros SGBD, mais quelques fichiers textes (csv) indexés, qui éviteront la redondance de données.
Le script reconstruira les données pour bâtir un menu et accéder aux fichiers.
Dernière modification par Watael (Le 05/11/2021, à 02:54)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 05/11/2021, à 03:36
- balinux
Re : Aide pour un script bash
merci je vais cherché sur ce sujet
Hors ligne
#4 Le 05/11/2021, à 03:59
- nany
Re : Aide pour un script bash
Bonjour,
il faut réfléchir en terme de Base de Données.
pas forcément un gros SGBD, mais quelques fichiers textes (csv) indexés, qui éviteront la redondance de données.
Je suis entièrement d’accord mais n’est-ce pas un peu compliqué pour un total débutant ?
Ceci étant posé, j’ai repris le script comme un débutant mais un peu plus éclairé.
#!/bin/bash
clear
echo "################################################################################"
echo "Voulez-vous :"
echo "1. lister les séries ;"
echo "2. Quitter ?"
echo
read -p "Entrez votre choix (1 ou 2) : " Choix
case "$Choix" in
1) ;;
2) clear && exit ;;
*) echo "Vous devez entrer un nombre entre 1 et 2. Je sors"
exit ;;
esac
echo
echo "################################################################################"
echo "Quelle série voulez-vous regarder ?"
echo "1. Sliders"
echo "2. Validé"
echo "3. Quitter"
echo
read -p "Entrez votre choix : " Serie
case "$Serie" in
1) echo
echo "################################################################################"
echo "Sliders - Quelle saison voulez-vous regarder ?"
echo "1. Sliders - S01"
echo "2. Quitter"
echo
read -p "Entrez votre choix : " Sliders
case "$Sliders" in
1) echo
echo "################################################################################"
echo "Sliders - S01 - Quel épisode voulez-vous regarder ?"
echo "1. 01 Le Monde selon Lénine.avi"
echo "2. 02 Un monde hippie.avi"
echo "3. 03 Un monde très British.avi"
echo "4. 04 Un monde sans maladie.avi"
echo "5. 05 La fin du monde.avi"
echo "6. 06 Le monde de l'intellect.avi"
echo "7. 07 Un monde au féminin.avi"
echo "8. 08 Un monde pour Rembrandt.avi"
echo "9. 09 Un monde parfait.avi"
echo "10. Quitter"
echo
read -p "Entrez votre choix : " Episode
case "$Episode" in
1) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/01* ;;
2) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/02* ;;
3) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/03* ;;
4) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/04* ;;
5) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/05* ;;
6) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/06* ;;
7) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/07* ;;
8) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/08* ;;
9) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/09* ;;
10) clear && exit ;;
*) echo "Vous devez entrer un nombre entre 1 et 10. Je sors"
exit ;;
esac ;;
2) clear && exit ;;
*) echo "Vous devez entrer un nombre entre 1 et 2. Je sors"
exit ;;
esac ;;
2) echo "Votre choix : Validé." ;;
3) clear && exit ;;
*) echo "Vous devez entrer un nombre entre 1 et 3. Je sors"
exit ;;
esac
Modifications apportées :
pas important mais correction de l’orthographe ;
important, l’indentation pour s’y retrouver plus facilement dans les case imbriqués ;
on se rend alors compte que le deuxième était fermé trop tôt, je n’ai pas cherché à comprendre pourquoi le script fonctionnait quand même ;pas important, ajout de quelques echo et d’un prompt aux read pour un peu plus de clarté dans la mise en page ;
changement des noms de variables pour être sûr de ne pas faire d’erreur dans les case imbriqués ;
gestion des choix erronés ;
et j’en oublie sûrement.
Alors, avant de se lancer dans l’exploration de fichiers csv, Je ferais d’abord des fonctions pour l’affichage des menus.
Ah, j’ai failli oublier, sur le forum il faut prendre l’habitude de formater les lignes de code ou le contenu d’un fichier texte (surtout s’il est long) en utilisant le bouton Texte préformaté () de la barre d’outils.D’ailleurs la modération va certainement venir te demander de modifier ton message #1. Tu l’as modifié, c’est très bien.
Dernière modification par nany (Le 05/11/2021, à 04:17)
En ligne
#5 Le 05/11/2021, à 04:13
- balinux
Re : Aide pour un script bash
merci pour ton aide et tes conseil mon script rend un peu plus propre
Hors ligne
#6 Le 05/11/2021, à 04:18
- nany
Re : Aide pour un script bash
Bon courage pour la suite.
Et n’hésite pas à revenir poser des questions ici si tu as des problèmes.
En ligne
#7 Le 05/11/2021, à 12:37
- Watael
Re : Aide pour un script bash
balinux va rapidement arriver à se poser la question, parce que, quand il y aura plus d'une série (le premier case n'est d'ailleurs pas abouti), son script va devenir illisible et inmaintenable à cause du nombre important de données qui devraient ne pas s'y trouver.
quand on a que quelques éléments à lister, on les met "en dur" dans le script, mais dès qu'il y a plus de données que de script, on "externalise" les données.
<mauvaise foi>
c'est déjà le cas ici !
</mauvaise foi>
Dernière modification par Watael (Le 05/11/2021, à 15:08)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 05/11/2021, à 15:04
- Tawal
Re : Aide pour un script bash
Hello,
Et une autre manière de faire serait d'utiliser la commande select plutôt que des echo .... read.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#9 Le 05/11/2021, à 15:18
- Watael
Re : Aide pour un script bash
pour en remettre une couche :
entre les deux cases (pour sélectionner un épisode), il n'y a pas de correspondance entre le titre de l'épisode choisi et le fichier qui sera lu par vlc - on peut choisir un épisode et lire un autre épisode.
c'est incohérent.
il faut donc, si on accepte que les données soient "en dur" dans le script, définir deux tableaux, dont les indices permettront d'associer les titres et les fichiers.
titres=( "épisode 1" "épisode 2" "..." )
fichiers=( 01.avi 02.avi ....avi )
qu'on peut afficher avec une boucle :
for i ${!titres[*]}; do printf '%s : %s\n' "${titres[i]}" "${fichiers[i]}" ; done
ça peut marcher pour UNE série, au-delà... je n'essaie même pas d'imaginer.
Dernière modification par Watael (Le 05/11/2021, à 17:53)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 05/11/2021, à 17:44
- balinux
Re : Aide pour un script bash
okok merci je prend vos conseil je vais voir si j arrive a les utilisé je vous rappel que le but premier est d'apprend et de m amusé quand je vois la communauté toujours la pour aidé je pense je vais avancé dans la compréhension des script bash encore un grand merci a vous tous
Hors ligne
#11 Le 05/11/2021, à 17:54
- Watael
Re : Aide pour un script bash
tu vas voir, c'est très amusant de construire une BDD en fichiers texte, et de l'exploiter en bash.
Dernière modification par Watael (Le 05/11/2021, à 17:54)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 05/11/2021, à 19:38
- balinux
Re : Aide pour un script bash
tu vas voir, c'est très amusant de construire une BDD en fichiers texte, et de l'exploiter en bash.
a voir même si je pense que je vais plutôt m arraché les cheveux avant de m amusé mdr mais bon j ai espoir
Hors ligne
#13 Le 06/11/2021, à 09:36
- FrancisFDZ
Re : Aide pour un script bash
Bonjour,
"Avant d"être capitaine, il faut être matelot". J'ai vu débuter ici des néophytes qui par la suite se sont révélés doués pour la programmation (plutôt en bash). Bonne raison pour persévérer !
D'autant plus que tu trouveras ici des coaches prêts à t'aider !
Dernière modification par FrancisFDZ (Le 06/11/2021, à 09:38)
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne
#14 Le 12/11/2021, à 11:35
- kholo
Re : Aide pour un script bash
Bonjour,
juste pour faire avancer le schmilblick....
je ferais une fonction lire...
pour éviter les
1) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/01* ;;
2) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/02* ;;
3) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/03* ;;
4) vlc --aspect-ratio 16:9 -L -f ~/Vidéos/Sliders/Sliders\ -\ S01/04* ;;
on peut aussi créer une routine pour lire des fichiers texte (csv) et ainsi mettre dans chaque fichier les noms des fichiers des films et leur emplacement
ça rejoint le conseil de Watael de passer en BDD
pour la mise en forme la redondance des
echo "################################################################################"
peut être factorisée en utilisant une variable...
et j'avais créé un fil avec des astuces et exemples en bash qui peut donner des idées...
have fun !!!
Hors ligne
#15 Le 12/11/2021, à 11:44
- iznobe
Re : Aide pour un script bash
Bonjour , sinon hors mis le fait d' apprendre le bash , ce que je comprends tout a fait , il existe kodi , installé et configuré en 5 minutes qui fait tout ca encore mieux que quiconque et meme a travers le reseau local avec les vignettes qui vont bien et touti couinti !
un simple
sudo apt install kodi
suffit vu que normalement il est dnas les depots.
PS : je n' ai pas d ' action chez kodi .
Dernière modification par iznobe (Le 12/11/2021, à 11:47)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#16 Le 17/11/2021, à 20:26
- balinux
Re : Aide pour un script bash
Bonjour , sinon hors mis le fait d' apprendre le bash , ce que je comprends tout a fait , il existe kodi , installé et configuré en 5 minutes qui fait tout ca encore mieux que quiconque et meme a travers le reseau local avec les vignettes qui vont bien et touti couinti !
un simplesudo apt install kodi
suffit vu que normalement il est dnas les depots.
PS : je n' ai pas d ' action chez kodi .
Merci j ai deja entendu parle de kodi mais sa date donc je vais de ce pas pour voir plus de détail
Hors ligne
#17 Le 17/11/2021, à 20:40
- balinux
Re : Aide pour un script bash
Je vien de test kodi et oui kodi est cool si je me souvien bien la dernier fois que j'ai testé sur recalbox .
maintenant il reste avoir je peu faire quoi auvec un script bash encore merci @iznobe
Hors ligne