Shell - interprétation de *

Résolu
jax54000 Messages postés 44 Statut Membre -  
jax54000 Messages postés 44 Statut Membre -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Oups,
    j'ai mal interprété :-)
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    
    ;-))
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    #!/bin/bash
    
    Sentence="Hello boys I want to display *"
    echo "$Sentence" | sed 's/ /\n/g'

    0
  4. jax54000 Messages postés 44 Statut Membre 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+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Juste pour le fun...
    Sentence="Hello boys I want to display *"
    set "$Sentence"
    echo  "$*"
    0
  7. jax54000 Messages postés 44 Statut Membre 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+
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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]$
    0
    1. jax54000 Messages postés 44 Statut Membre 1
       
      Ok merci
      A+
      0