Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/09/2006, 16h58   #1
Membre habitué
 
Inscription : avril 2005
Messages : 266
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 266
Points : 127
Points : 127
Par défaut Manipulation de chaines

Bonjour

je cherche a recuperer le debut d'un parametre .
En fait tout ce qui se trouve avant le caractere "="

si quun sait faire ca ?
tchoukapi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 17h08   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Citation:
Envoyé par tchoukapi
je cherche a recuperer le debut d'un parametre .
En fait tout ce qui se trouve avant le caractere "="
Pour extraire ce qui est à gauche et à droite du signe = dans le paramètre 1 du script:
Code :
1
2
3
 
gauche=${1%=*}
droite=${1#*=}
Référence : man sh
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 17h57   #3
Membre habitué
 
Inscription : avril 2005
Messages : 266
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 266
Points : 127
Points : 127
C'est bien ce que je recherche mais en fait

je recois un parametre que je met dans une variable :

le parametre est de la forme tribu=315656 par exemple ou
bien erreur = CGS54
et je voudrais que ce parametre ne commence que par :

Code :
1
2
3
4
5
 
tribu=
lot=
erreur=
marche=
sinon je renvoi une erreur
tchoukapi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 18h24   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Citation:
Envoyé par tchoukapi
C'est bien ce que je recherche mais en fait
je recois un parametre que je met dans une variable :
Il suffit de remplacer 1 par MESSAGE
Code :
1
2
gauche=${MESSAGE%=*}
droite=${MESSAGE#*=}
Citation:
Envoyé par tchoukapi
et je voudrais que ce parametre ne commence que par :
tribu=
lot=
erreur=
marche=
sinon je renvoi une erreur
Avec un case
Code :
1
2
3
4
case ${gauche} in
tribu|lot|erreur|marche) traitement... ;;
*) echo "erreur..." ;;
esac
Référence : man sh Quand tu seras arrivé au bout, tu auras déjà 50% de la programmation shell entre les mains
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 18h36   #5
Membre habitué
 
Inscription : décembre 2004
Messages : 129
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 129
Points : 102
Points : 102
autre référence, moins austère : advanced BASH scripting guide
Rhineauféros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 20h59   #6
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
@al1_24: T'aurai pas oublié d'ouvrir la parenthèse dans le case?
Code :
1
2
3
4
5
case ${gauche} in
(tribu|lot|erreur|marche) traitement... ;;
*) echo "erreur..." ;;
esac
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 11h58   #7
Membre habitué
 
Inscription : avril 2005
Messages : 266
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 266
Points : 127
Points : 127
impec ca marche nickel merci a tous

Seulement j'aurais une autre requete dans le case je voudrais faire un traitement si le c'est une chaine vide

genre ca (mais ca marche pas)

Code :
1
2
3
4
5
 
case ${gauche} in
tribu|lot|erreur|marche|"") traitement... ;;
*) echo "erreur..." ;;
esac
tchoukapi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 12h15   #8
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Citation:
Envoyé par tchoukapi
Seulement j'aurais une autre requete dans le case je voudrais faire un traitement si le c'est une chaine vide
C'est dans le cas "autres" (*) qu'on peut traiter la chaîne vide, ou à l'extérieur du case.
Code :
1
2
3
4
5
6
7
8
9
if [[ -z "${gauche}"  ]]
then
    /* Cas chaine vide */
else
    case ${gauche} in
        tribu|lot|erreur|marche) traitement... ;;
        *) echo "erreur..." ;;
    esac 
fi
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 14h50   #9
Membre habitué
 
Inscription : avril 2005
Messages : 266
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 266
Points : 127
Points : 127
Arf il me met
Citation:
[[: not found
avec

Code :
1
2
3
4
5
 
 if [[ -z "${MESSAGE}"]]
    then
....
fi
tchoukapi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 14h55   #10
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Citation:
Envoyé par tchoukapi
Arf il me met
avec
Code :
1
2
3
4
5
 
 if [[ -z "${MESSAGE}"]]
    then
....
fi
Désolé, [[ c'est en Korn Shell. En bash, c'est [ seulement.
Attention, il doit y avoir des espaces autour des crochets
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 15h50   #11
Membre habitué
 
Inscription : avril 2005
Messages : 266
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 266
Points : 127
Points : 127
Impec ca marche nickel
Je commence juste et je n'ai jamais fait de scripts shell
Alors je galere un peu

un grand merci !
tchoukapi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 16h49   #12
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Pense au en bas de page

++
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 17h41   #13
Membre habitué
 
Inscription : avril 2005
Messages : 266
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 266
Points : 127
Points : 127
Je ne l'avais pas oublié
Merci
tchoukapi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h39.


 
 
 
 
Partenaires

Hébergement Web