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.

#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,



Watael a écrit :

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é (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à... hmm 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

Watael a écrit :

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 ! wink
D'autant plus que tu trouveras ici des coaches prêts à t'aider ! cool

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 !!! cool

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

iznobe a écrit :

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 tongue 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 .


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