Shell - interprétation de *

Résolu
Hello,

Le sujet dira qqchse à certains...........comme à Jipicy par ex.

Et oui il s'agit encore d'un problème d'interprétation du caractère * mais pas dans le même contexte.

Explications :
J'ai une chaine de caracères contenant plusieurs mots. Un de ces mots est une * (là voilà cette étoile).
Je souhaiterais afficher ces mots un à un.

concrètement, le code :

Sentence="Hello boys I want to display *"
for Word in ${Sentence}
do
echo "${Word}"
done

Le résultat attendu est celui que j'attends pour tous les mots SAUF pour le caractère *. Je voudrais le voir affiché mais il est interprété...

Merci à tous les grands maîtres des claviers.
A+
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. Modérateur
    Salut,

    Voilà une solution, mais il doit y avoir moins tordu ;-))
    #!/bin/bash
    
    
    Sentence=(Hello boys I want to display \*)
    
    count=${#Sentence[@]}
    i=1
    while [ "$i" -le "$count" ]
    do
    echo -e "${Sentence[$i]}"
    i=$(expr $i + 1)
    done
    
    ;-))
    1. Modérateur
      Salut,
      #!/bin/bash
      
      Sentence="Hello boys I want to display *"
      echo "$Sentence" | sed 's/ /\n/g'

      1. Jipicy,

        Le problème est que je ne peux pas niitialiser Sentence avec (Hello boys I want to display \*) pour la simple et bonne raison que dans mon cas Sentence=$* (dans une fonction).
        ...

        La deuxième solution de lami20j fonctionne.

        Merci à vous 2.

        A+
        1. Modérateur
          Juste pour le fun...
          Sentence="Hello boys I want to display *"
          set "$Sentence"
          echo  "$*"
          1. peux-tu m'éclaircir Jipicy ? Que fait set ? est-ce que "$*" va pouvoir quand même être "découpé" en plusieurs mots ?

            parce qu'effectivement la solution de lami ne me permet pas par exmple (ou pas facilement) d'afficher le numéro des paramètres (car tu l'as compris je souhaites afficher les paramètre passés à des fonctions qd un mode debug est activé).

            Autrement dit je souhaiterias que le script m'affiche :

            1: Hello
            2: Boys
            3: I
            4: want
            5: to
            6: display
            7: *

            Merci
            A+
            1. Modérateur
              Re-

              Que fait set ?
              Elle sert à affecter des paramètres. Un ch'tit exemple :
              [jp@MDK tmpfs]$ cat exemple.sh
              
              #! /bin/bash
              
              echo "Ceci est le 1er paramètre du script : $1"
              echo "Ceci est le 2nd paramètre du script : $2"
              echo "Les voici tous : $*"
              echo "==========================================="
              set vert jaune
              echo "Ceci est le nouveau 1er paramètre du script : $1"
              echo "Ceci est le nouveau 2nd paramètre du script : $2"
              echo "Les voici tous : $*"
              echo
              
              [jp@MDK tmpfs]$ sh exemple.sh bleu blanc rouge
              
              Ceci est le 1er paramètre du script : bleu
              Ceci est le 2nd paramètre du script : blanc
              Les voici tous : bleu blanc rouge
              ===========================================
              Ceci est le nouveau 1er paramètre du script : vert
              Ceci est le nouveau 2nd paramètre du script : jaune
              Les voici tous : vert jaune
              
              [jp@MDK tmpfs]$
              1. Ok merci
                A+