Partage
  • Partager sur Facebook
  • Partager sur Twitter

* dans un fichier text

Sujet résolu
    9 juillet 2021 à 14:12:09

    Bonjour,

    encore moi:D. J'ai un fichier dans lequel se trouve plusieurs fois le charactère "*".

    Mon problème est simple: Pourquoi lors de sa lescture avec bash le caractère "*" est remplacer par le non de mon fichier txt et le nomde mon programme bash ?

    Merci d'avance

    fichier txt:

    gauche _ _ * true

    prgm bash

    gauche
    _
    _
    prgm.txt
    turing.sh
    true




    -
    Edité par Quegzacov 9 juillet 2021 à 14:22:59

    • Partager sur Facebook
    • Partager sur Twitter

    "A computer is like air conditioning, it becomes useless when you open Windows" Linus Torvalds

      9 juillet 2021 à 14:18:17

      l'astérisque (sans être protégé : guillemets, apostrophes, barre oblique inverse) est remplacé par la liste des fichiers dans le répertoire courant.

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        9 juillet 2021 à 14:26:31

        dantonq a écrit:

        l'astérisque (sans être protégé : guillemets, apostrophes, barre oblique inverse) est remplacé par la liste des fichiers dans le répertoire courant.


        Merci beaucoup mais que devrais-je faire pour y remédier puisque le but est de ne pas modifier le fichier text

        • Partager sur Facebook
        • Partager sur Twitter

        "A computer is like air conditioning, it becomes useless when you open Windows" Linus Torvalds

          9 juillet 2021 à 14:28:00

          montre-nous comment tu acquiers tes données, et comment tu les utilises.
          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            9 juillet 2021 à 14:29:57

            voici le fichier text:

            gauche 0 _ r defile_d0
            gauche 1 _ r defile_d1
            gauche _ _ * true
            
            droite * * l droite
            droite _ _ r gauche
            
            defile_d0 * * r defile_d0
            defile_d0 _ _ l is0
            
            defile_d1 * * r defile_d1
            defile_d1 _ _ l is1
            
            is0 0 _ l droite
            is0 1 _ l false
            is0 _ _ * true
            is1 1 _ l droite
            is1 0 _ l false
            is1 _ _ * true
            
            false * _ l false
            false _ n r false1
            false1 _ o * halt
            
            true _ y r true1
            true1 _ e r true2
            true2 _ s * halt

            et voici le fichier bash:

            #!/bin/bash
            
            # récupère les lignes du fichier et les met dans un tableau
            cut_line_file(){
                list_lines=()
                while read line
                do
                    list_lines+=( "$line" )
                done < prgm.txt
            }
            
            # découpe la ligne en plusieurs arguments
            cut_words(){
                txt="${list_lines[$1]}"
                list_lines[$1]=`echo $txt | tr ' ' '\n'`
                words=()
                for word in ${list_lines[$1]}
                do
                    words+=( $word )
                    echo "$word"
                done
            }
            
            cut_line_file
            cut_words $1

            voilà un exemple de machine de turing: http://morphett.info/turing/


            -
            Edité par Quegzacov 9 juillet 2021 à 14:34:17

            • Partager sur Facebook
            • Partager sur Twitter

            "A computer is like air conditioning, it becomes useless when you open Windows" Linus Torvalds

              9 juillet 2021 à 15:13:14

              mapfile -t lignes <<<tonFichierCmd
              read -ra mots <<<"${lignes[2]}" #par exemple : indice #2 = troisième ligne, qui contient un astérisque
              set -f
              echo ${mots[@]}
              set +f

              -
              Edité par dantonq 9 juillet 2021 à 20:39:58

              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                10 juillet 2021 à 12:32:51

                dantonq a écrit:

                mapfile -t lignes <<<tonFichierCmd
                read -ra mots <<<"${lignes[3]}"
                set -f
                echo ${mots[@]}
                set +f

                Merci pour la solution mais est-ce que je pourrais voir un peu plus d'explication svp:D
                • Partager sur Facebook
                • Partager sur Twitter

                "A computer is like air conditioning, it becomes useless when you open Windows" Linus Torvalds

                  10 juillet 2021 à 12:56:17

                  oui, dans le man bash.

                  en gros, ça empêche l'astérisque d'être remplacé par les noms des fichiers du répertoire courant.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                    10 juillet 2021 à 13:21:03

                    D'accord merci je vais regarder dans le man

                    • Partager sur Facebook
                    • Partager sur Twitter

                    "A computer is like air conditioning, it becomes useless when you open Windows" Linus Torvalds

                      10 juillet 2021 à 13:25:32

                      attention, il y a une coquille sur la ligne #1

                      mapfile -t lignes < tonFichierCmd
                      read -ra mots <<<"${lignes[3]}"
                      set -f
                      echo ${mots[@]}
                      set +f


                      tu peux aussi taper help nomCommandeInterne pour obtenir une description simplifiée de la syntaxe d'une commande interne.

                      -
                      Edité par dantonq 10 juillet 2021 à 13:31:19

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                        10 juillet 2021 à 14:16:25

                        dantonq a écrit:

                        attention, il y a une coquille sur la ligne #1

                        mapfile -t lignes < tonFichierCmd
                        read -ra mots <<<"${lignes[3]}"
                        set -f
                        echo ${mots[@]}
                        set +f


                        tu peux aussi taper help nomCommandeInterne pour obtenir une description simplifiée de la syntaxe d'une commande interne.

                        -
                        Edité par dantonq il y a 44 minutes


                        Oui je m'en suis rendu compte^^. Merci quand même!
                        • Partager sur Facebook
                        • Partager sur Twitter

                        "A computer is like air conditioning, it becomes useless when you open Windows" Linus Torvalds

                        * dans un fichier text

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown