Shell - interprétation de *

Résolu/Fermé
jax54000 Messages postés 44 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 24 mai 2008 - 30 mars 2007 à 17:00
jax54000 Messages postés 44 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 24 mai 2008 - 31 mars 2007 à 18:31
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+
A voir également:

7 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 mars 2007 à 18:44
Oups,
j'ai mal interprété :-)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 mars 2007 à 19:15
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 mars 2007 à 19:20
Salut,
#!/bin/bash

Sentence="Hello boys I want to display *"
echo "$Sentence" | sed 's/ /\n/g'

0
jax54000 Messages postés 44 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 24 mai 2008 1
30 mars 2007 à 20:45
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
31 mars 2007 à 00:50
Juste pour le fun...
Sentence="Hello boys I want to display *"
set "$Sentence"
echo  "$*"
0
jax54000 Messages postés 44 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 24 mai 2008 1
31 mars 2007 à 12:36
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
31 mars 2007 à 13:36
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
jax54000 Messages postés 44 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 24 mai 2008 1
31 mars 2007 à 18:31
Ok merci
A+
0