Découper chaine de caractère

Résolu/Fermé
simo - 5 juin 2008 à 10:52
 simo - 6 juin 2008 à 10:17
Bonjour,
J'ai une chaine de caractère sous forme :
nom1,nom2,nom3
que je voudrai rendre sous forme de 3 paramères çàd :
param1=nom1
param2=nom2
param3=nom3

Merci d'avance.
A voir également:

3 réponses

résolu
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
5 juin 2008 à 14:27
Merci ;-((
0
salut jipycy :)
j'ai un nouveau pbm à te poser:
j'ai un scipt interactif et qui donne la possibilité à l'utilisateur de faire son choix parmi d'autres, je voudrai que ce script récupère le choix soit en mode intéractif soit en mode ligne de commande.
c'est possible?
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 > simo
5 juin 2008 à 16:03
J'aurai bien aimé que tu nous mettes la solution à ton 1er problème si c'était possible pour que ça serve à d'autres éventuellement...

Quant à ton autre problème c'est un peu confus ;-\

script interactif = ligne de commande, enfin pour moi.

Donc expliques-toi mieux et avec des exemples si possible...
0
simo > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
5 juin 2008 à 16:16
la réponse au premier problème :
chaine=nom1,nom2,nom3
chaineTab=`echo $chaine`
old="$IFS"
IFS=","
set $chaineTab
IFS="$old"
echo $1,$2,$3

Pour mon deuxième problème :
le script est comme suit :

>cat test.sh

while true
do
clear
echo "\n\n\n\n"
echo "
xxxxxxxxxxxxxxxxxxxxxxxxxxx
------------------------------


1. choix1

2. choix2

0. Quitter


Votre choix : \c choix"
read choix

case "$choix" in
"1" )
echo "vous avez taper choix 1";;
"2" )
echo "vous avez taper choix 2";;
esac
done

si j'éxecute ce script, l'éxecution est intéractive.
sinon je veux l'éxecuter comme suit :

>test.sh 1
résultat --> vous avez taper choix 1

C bon :)
merci d'avance
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
5 juin 2008 à 18:46
Déjà merci pour la solution ;-)

Concernant ton autre problème, je dirai oui c'est possible et non ce n'est pas possible du moins de la manière dont tu voudrais que ça le fasse, et notamment avec une boucle "while true".

Par contre il fort possible de passer des données à un script interactif en se passant du terminal.
En voilà un exemple avec un script tout simple...

Le script : simo.sh
#! /bin/bash

read -p "Entrez une couleur : " couleur
read -p "Entrez un chiffre : " chiffre
read -p "Entrez un nom d'oiseau : " nom
echo -e "\nLa couleur choisie est : ${couleur}\n
Le chiffre choisi est : ${chiffre}\n
Le nom d'oiseau choisi est : ${nom}\n"

1 - script interactif depuis le terminal :
$ ./simo.sh
Entrez une couleur : bleu
Entrez un chiffre : 18
Entrez un nom d'oiseau : ara

La couleur choisie est : bleu

Le chiffre choisi est : 18

Le nom d'oiseau choisi est : ara

2 - script interactif avec fichier de réponse :
$ cat fich
vert
2008
colombe

$ ./simo.sh < fich

La couleur choisie est : vert

Le chiffre choisi est : 2008

Le nom d'oiseau choisi est : colombe

3 - script interactif avec une variable :
$ var="rouge
555
pigeon"

$ echo "$var"
rouge
555
pigeon

$ ./simo.sh <<<"$var"

La couleur choisie est : rouge

Le chiffre choisi est : 555

Le nom d'oiseau choisi est : pigeon
En espérant avoir répondu en partie à tes attentes ;-))
0
Bonjour jipycy,
merci pour ta réponse, elle me met ds le bon chemin :)
par ailleurs, comment peut on savoir le nombre de paramètres passé pour un script. Ex :
monScript.sh param1 param2 param3
-->3paramètres

Merci
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 > simo
6 juin 2008 à 10:16
echo $#
;-))
0
c bon. résolu
print $#

Bonne journée
0