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 ?
Version imprimable
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 ?
Pour extraire ce qui est à gauche et à droite du signe = dans le paramètre 1 du script:Citation:
Envoyé par tchoukapi
Référence : man shCode:
1
2
3 gauche=${1%=*} droite=${1#*=}
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 ouCode:
1
2MESSAGE = ${1}
bien erreur = CGS54
et je voudrais que ce parametre ne commence que par :
sinon je renvoi une erreurCode:
1
2
3
4
5 tribu= lot= erreur= marche=
Il suffit de remplacer 1 par MESSAGECitation:
Envoyé par tchoukapi
Code:
1
2 gauche=${MESSAGE%=*} droite=${MESSAGE#*=}
Avec un caseCitation:
Envoyé par tchoukapi
Référence : man sh Quand tu seras arrivé au bout, tu auras déjà 50% de la programmation shell entre les mainsCode:
1
2
3
4 case ${gauche} in tribu|lot|erreur|marche) traitement... ;; *) echo "erreur..." ;; esac
autre référence, moins austère : advanced BASH scripting guide
@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
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
C'est dans le cas "autres" (*) qu'on peut traiter la chaîne vide, ou à l'extérieur du case.Citation:
Envoyé par tchoukapi
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
Arf il me met
avecCitation:
[[: not found
Code:
1
2
3
4
5 if [[ -z "${MESSAGE}"]] then .... fi
Désolé, [[ c'est en Korn Shell. En bash, c'est [ seulement.Citation:
Envoyé par tchoukapi
Attention, il doit y avoir des espaces autour des crochets
Impec ca marche nickel
Je commence juste et je n'ai jamais fait de scripts shell
Alors je galere un peu
un grand merci !
Pense au :resolu: en bas de page ;)
++
Je ne l'avais pas oublié
Merci