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
    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+
  2. 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
      Juste pour le fun...
      Sentence="Hello boys I want to display *"
      set "$Sentence"
      echo  "$*"
      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
          Salut,
          #!/bin/bash
          
          Sentence="Hello boys I want to display *"
          echo "$Sentence" | sed 's/ /\n/g'

          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
            
            ;-))