#26 Le 10/04/2026, à 23:21
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
[ ] est un alias pour test
[[ ]] est un autre test doté de fonctionnalités avancées
selon l'opérateur de comparaison, il permet (succinctement)
=~ de comparer une chaîne à une regex
== d'utiliser le développement des chemins
je préconise d'utiliser test ou son alias pour les tests simples, et de réserver les crochets doubles pour les tests avancés uniquement.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#27 Le 10/04/2026, à 23:34
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
il faudrait vraiment avoir des exemples et des bons exemples , pas des exemples microsoft mais "pour les nuls"
quand on fait un man test , c'est à prendre peur !!!!!
Hors ligne
#28 Le 10/04/2026, à 23:44
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
on ne fait pas man test, ça n'affiche que la version POSIX.
fais help test ou lis le man bash.
ou encore, suis nos discussions, regarde les solutions qu'on propose.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#29 Le 10/04/2026, à 23:59
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
test string1 = string2
équivaut à [ string1 = string2 ]
Hors ligne
#30 Le 11/04/2026, à 00:03
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
ouaip.
mais, pense à mettre des guillemets. TOUJOURS ! ![]()
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#31 Le 13/04/2026, à 10:53
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour
Un exemple avec awk qui possède une fonction index correspondant à ton problème :
~$ mon_champ="ABCDEFGHIJKLMNOPQRSTUVWWXYZ"
~$ echo "$mon_champ" | awk '{print index($0,"MNOP")}'
13
~$
Mais tu recherches probablement expr index :
~$ expr index "$mon_champ" "MNOP"
13
~$Avec
jean-marie@jean-marie:~$ mon_champ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
jean-marie@jean-marie:~$ recherche="MNOP"
jean-marie@jean-marie:~$ debut="${mon_champ%%${recherche}*}"
jean-marie@jean-marie:~$ position=$((${#debut}+1))
jean-marie@jean-marie:~$ echo $position
13on arrive à obtenir la position dans une variable
Avec les 2 réponses de Nany qui marchent très bien, merci encore, je n'arrive pas à les stocker dans une variable
c'est une question de dollar et non de feeling (cf William Scheller!!), de parenthèses de crochets de guillemets ...
J'ai essayé ça , c'est naturellement tout refusé
jojo@jojo-Aspire-7720Z:~$ pos=expr index $var "e"
jojo@jojo-Aspire-7720Z:~$ pos="expr index $var "e""
jojo@jojo-Aspire-7720Z:~$ pos=(expr index $var) "e"
jojo@jojo-Aspire-7720Z:~$ pos=(expr index $var "e")
jojo@jojo-Aspire-7720Z:~$ pos=${expr index $var "e"}
jojo@jojo-Aspire-7720Z:~$ pos=((expr index $var "e"))
jojo@jojo-Aspire-7720Z:~$ pos=echo "$var" | awk '{print index ($0,"cd")}'
jojo@jojo-Aspire-7720Z:~$ pos="echo "$var" | awk '{print index ($0,"cd")}'"désolé pour la question ,ça doit être une formalité pour vous , experts!!
Merci d'avance pour votre mansuétude
JM
Hors ligne
#32 Le 13/04/2026, à 11:04
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
J'ai essayé ça
tout ça !? je suis sûr que tu peux en trouver d'autres. ![]()
LIS LA DOC !!!
commence avec le shell programming for beginners
et quand t'auras tout lu, tu pourras passer à l'ABS (Advanced Bash Scripting guide).
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#33 Le 13/04/2026, à 11:04
- iznobe

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
pos=$(expr index "$mon_champ" "MNOP")?
Dernière modification par iznobe (Le 13/04/2026, à 11:05)
Hors ligne
#34 Le 13/04/2026, à 13:32
- pingouinux

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour,
@nany #3
@iznobe #33
Attention, avec
mon_champ="ABCDEFGHIJKLMNOPQRSTUVWWXYZ"cette expression
expr index "$mon_champ" "MNOP"ne renvoie pas la position de la chaîne "MNOP", mais celle du premier caractère M, N, O, P rencontré (ou 0).
Exemple :
$ expr index "$mon_champ" "MAZ"
1Hors ligne
#35 Le 13/04/2026, à 14:30
- iznobe

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
@pingouinux
je ne sais pas , je n' ai pas tester .
j ' ai fait confiance au retour de @nany.
ma réponse était de toute manière plus axée sur la syntaxe appropriée et la demande de :
J'ai essayé ça , c'est naturellement tout refusé
jojo@jojo-Aspire-7720Z:~$ pos=expr index $var "e" jojo@jojo-Aspire-7720Z:~$ pos="expr index $var "e"" jojo@jojo-Aspire-7720Z:~$ pos=(expr index $var) "e" jojo@jojo-Aspire-7720Z:~$ pos=(expr index $var "e") jojo@jojo-Aspire-7720Z:~$ pos=${expr index $var "e"} jojo@jojo-Aspire-7720Z:~$ pos=((expr index $var "e")) jojo@jojo-Aspire-7720Z:~$ pos=echo "$var" | awk '{print index ($0,"cd")}' jojo@jojo-Aspire-7720Z:~$ pos="echo "$var" | awk '{print index ($0,"cd")}'"
si je " mâche " completement le boulot , je dirais qu ' en appliquant la syntaxe de mon message précédent , ça donnerait quelquechose comme :
pos=$(expr index "$var" 'e')Dernière modification par iznobe (Le 13/04/2026, à 14:33)
Hors ligne
#36 Le 13/04/2026, à 14:50
- MicP
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Oui :
… ‘index STRING CHARSET’ Returns the first position in STRING where the first character in CHARSET was found. If no character in CHARSET is found in STRING, return 0. …
=======================
EDIT :
La version française du manuel de la commande expr pourrait prêter à confusion :
man expr…
index CHAÎNE CAR
valeur de la position du premier caractère CAR trouvé dans CHAÎNE, sinon 0
…et dans la version non traduite :
LANG=C man expr…
index STRING CHARS
index in STRING where any CHARS is found, or 0
…=======
Se méfier des traductions, chercher la source.
INTERPRETER, n. One who enables two persons of different languages to understand each other by repeating to each what it would have been to the interpreter's advantage for the other to have said.
Traduction :
Interprete : Une personne qui permet à deux personnes parlant des langues différentes de se comprendre en répétant à chacune ce qu'il aurait été préférable pour l'interprète que l'autre ait dit.
Dernière modification par MicP (Le 16/04/2026, à 11:44)
Hors ligne
#37 Le 13/04/2026, à 15:28
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
ouch, le vilain faux-ami. ![]()
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#38 Le 14/04/2026, à 07:23
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour à tous et merci
j'ai "travaillé" hier après-midi pour avancer dans ma formation.
je ne suis pas revenu hier voir les réponses à mes questions qui ont déclenché bien des réactions
Je me suis appuyé sur
jean-marie@jean-marie:~$ mon_champ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"jean-marie@jean-marie:~$ recherche="MNOP"jean-marie@jean-marie:~$ debut="${mon_champ%%${recherche}*}"jean-marie@jean-marie:~$ position=$((${#debut}+1))jean-marie@jean-marie:~$ echo $positionje voulais lire un fichier, en extraire des donnés non contenues sur un seul enregistrement afin de constituer un fichier contenant ces données sélectionnées (et en testant la validité des données lues (problème de séquences (le fichier en entrée est constitué de séquences de 3 enregistrements, le premier donnant la date, le deuxième le temps et le troisième à exclure))
en sortie j'ai concaténé la date et le temps en séparant le tout par un point virgule.
Pour les problèmes de séquence j'ai testé le premier caractère qui doit être l,m,j,v,s,d (lundi mardi ...dimanche).
J'avais des problèmes de séquence car certains enregistrements étaient en double, et j'ai aussi piégé en corrigeant lundi en yundi par exemple pour tester dans ce cas
Voici fichier entrée
Startup finished in 7.909s (kernel) + 51.657s (userspace) = 59.566s
graphical.target reached after 51.621s in userspace
lun. 13 avril 2026 09:55:24 CEST
Startup finished in 9.479s (kernel) + 1min 12.098s (userspace) = 1min 21.577s
graphical.target reached after 59.077s in userspace
lun. 13 avril 2026 20:50:29 CEST
Startup finished in 8.975s (kernel) + 52.481s (userspace) = 1min 1.456s
graphical.target reached after 52.450s in userspacevoici fichier en sortie
524 mar. 07 avril 2026 08:38:59 CEST ; (userspace) = 1min 20.114s
525 mer. 08 avril 2026 08:36:20 CEST ; (userspace) = 1min 17.681s
526 jeu. 09 avril 2026 08:32:47 CEST ; (userspace) = 1min 15.110s
527 sam. 11 avril 2026 07:43:42 CEST ; (userspace) = 58.700s
528 sam. 11 avril 2026 09:36:04 CEST ; (userspace) = 59.566s
529 lun. 13 avril 2026 09:55:24 CEST ; (userspace) = 1min 21.577s
530 lun. 13 avril 2026 20:50:29 CEST ; (userspace) = 1min 1.456s
13/04/2026 à 21h03m13s ; 13/04/2026 à 21h03m15s Nombre Lus: 1590 Nombre Ecrits: 530Je vais regarder en détail vos réponses, je vais garder un de mes petits enfants ce matin.
J'ai une autre question
Comment tuer la tache du programme sh qui tourne (lancé en cliquant sur le nom du programme)
dans top, je ne la vois pas ou je ne comprends pas !!
merci encore
modération: rajout des balises code manquantes
Dernière modification par xubu1957 (Le 14/04/2026, à 07:34)
Hors ligne
#39 Le 16/04/2026, à 08:54
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour
j'ai testé la commande de iznobe
jojo@jojo-Aspire-7720Z:~$ mon_champ="ABCDEFGHIJKLMNOPQRSTUVWWXYZ"
jojo@jojo-Aspire-7720Z:~$ expr index "$mon_champ" "MNOP"
13
jojo@jojo-Aspire-7720Z:~$ expr index "$mon_champ" "MNPP"
13
jojo@jojo-Aspire-7720Z:~$ pos=$(expr index "$mon_champ" "MNOP")
jojo@jojo-Aspire-7720Z:~$ echo $pos
13
jojo@jojo-Aspire-7720Z:~$ ^C
jojo@jojo-Aspire-7720Z:~$ elle est donc exacte
et on voit aussi que
La version française du manuel de la commande expr pourrait prêter à confusion :
man expr
…
index CHAÎNE CAR
valeur de la position du premier caractère CAR trouvé dans CHAÎNE, sinon 0
…il faut bien que toute la chaine de caractères recherchée soit trouvée et non que le premier caractère !!
Bonne journée
JM
Hors ligne
#40 Le 16/04/2026, à 09:06
- iznobe

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Heu , si ce que dis le man est vrai , il cherche un CARacter donné en argument dans une chaine .
Si tu donnes plusieurs caracteres au lieu de un , il renvoi " valeur de la position du premier caractère CAR trouvé dans CHAÎNE " .
donc si tu fais :
mon_champ="ABCDEFGHIJKLMNOPQRSTUVWWXYZ"
expr index "$mon_champ" "MNOPA"tu risques d ' avoir une surprise ... car tu devrais recuperer : 1 .
un caractère c ' est une lettre par exemple. pas plusieurs .
Dernière modification par iznobe (Le 16/04/2026, à 09:10)
Hors ligne
#41 Le 16/04/2026, à 09:10
- nany

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour,
il faut bien que toute la chaine de caractères recherchée soit trouvée et non que le premier caractère !!
Eh bien non.
Si je remplace, par exemple, Le D par un N dans mon_champ :
~$ mon_champ="ABCNEFGHIJKLMNOPQRSTUVWXYZ"
~$La lettre N se trouve en position 4 et en position 14.
Alors :
~$ expr index "$mon_champ" "MNOP"
4
~$C’est bien la première position de N qui est donnée.
Hors ligne
#42 Le 16/04/2026, à 11:59
- MicP
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour
La chaîne de caractère assignée comme valeur à la variable mon_champ et la liste des caractères à rechercher ne sont pas très bien choisies pour faire des tests
puisqu'elles contiennent toutes les deux des suites de caractères qui sont ordonnées alphabétiquement.
~$ mon_champ="............. blabla...MNOP"
~$ expr index "$mon_champ" "MNOP"
24~$ mon_champ="...M...PONM.. blabla...MNOP"
~$ expr index "$mon_champ" "MNOP"
4~$ mon_champ=".......PONM.. blabla...MNOP"
~$ expr index "$mon_champ" "MNOP"
8Dernière modification par MicP (Le 16/04/2026, à 12:00)
Hors ligne
#43 Le 16/04/2026, à 12:31
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour
j'ai écrit une sottise ,désolé
on voit bien que expr index donne le rang d'un des caractères du premier caractère trouvé dans le champ cible (le choix des caractères à trouver se trouvant dans le champ final Nany l'a très bien prouvé)
en résumé est-ce que un de ces caractères (ex "mnop") , se trouve dans mon champ?
La proposition proposée par diesel est celle la mieux appropriée pour ma demande initiale (rechercher une chaine de caractères, dans un champ donné
enfin, si j'ai bien compris !!
Merci
JM
Hors ligne
#44 Le 16/04/2026, à 14:20
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
voila mes tests du jour
pour info j'avais opté pour la deuxième solution dans mon programme car je ne savais pas comment recuperer la valeur de l'expr index que m'a donnée iznobe (pos=$(expr index "$mon_champ" "MNOP"))
jojo@jojo-Aspire-7720Z:~$ mon_champ=J
jojo@jojo-Aspire-7720Z:~$ expr index "$mon_champ" "lmjvsd"
0
jojo@jojo-Aspire-7720Z:~$ mon_champ=j
jojo@jojo-Aspire-7720Z:~$ expr index "$mon_champ" "lmjvsd"
1
jojo@jojo-Aspire-7720Z:~$ jourok="lmjvsd"
jojo@jojo-Aspire-7720Z:~$ debjour=j
jojo@jojo-Aspire-7720Z:~$ debutx="${jourok%%${debjour}*}"
jojo@jojo-Aspire-7720Z:~$ echo $debutx
lm
jojo@jojo-Aspire-7720Z:~$ debjour=J
jojo@jojo-Aspire-7720Z:~$ debutx="${jourok%%${debjour}*}"
jojo@jojo-Aspire-7720Z:~$ echo $debutx
lmjvsdon voit que la casse est importante j est différent de J
Merci encore
Hors ligne
#45 Le 20/04/2026, à 09:48
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour
je reviens vers Micp
Bonjour
Je propose cette ligne de comandes bash :
Cette ligne de commandes retournera la position de recherche dans mon_champ (et un code d'erreur à zéro => indiquant que tout s'est bien passé)
ou bien retournera un code d'erreur à 1 si recherche n'a pas été trouvé dans mon_champ
[[ $mon_champ =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))j'ai testé
mon_champ="ABCDEFGHIJKLM"
si je cherche "A"
jojo@jojo-Aspire-7720Z:~$ recherche="A"
jojo@jojo-Aspire-7720Z:~$ [[ $mon_champ =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
1jojo@jojo-Aspire-7720Z:~$ p=$(( ${#BASH_REMATCH[1]} ))
jojo@jojo-Aspire-7720Z:~$ echo $p
0jojo@jojo-Aspire-7720Z:~$ recherche="B"
jojo@jojo-Aspire-7720Z:~$ [[ $mon_champ =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
2jojo@jojo-Aspire-7720Z:~$ p=$(( ${#BASH_REMATCH[1]} ))
jojo@jojo-Aspire-7720Z:~$ echo $p
1jojo@jojo-Aspire-7720Z:~$ recherche="L"
jojo@jojo-Aspire-7720Z:~$ [[ $mon_champ =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
12jojo@jojo-Aspire-7720Z:~$ recherche="M"
jojo@jojo-Aspire-7720Z:~$ [[ $mon_champ =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
13jojo@jojo-Aspire-7720Z:~$ recherche="N"
jojo@jojo-Aspire-7720Z:~$ [[ $mon_champ =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
jojo@jojo-Aspire-7720Z:~$ p=$(( ${#BASH_REMATCH[1]} ))
jojo@jojo-Aspire-7720Z:~$ echo $p
0avec A (présent) ou N(absent) la valeur de $(( ${#BASH_REMATCH[1]} )) est à zéro
et pour les façons de rechercher (Diesel,Nany,Micp)
je n'arrive pas à rechercher dans un champ les caractères "*" et "+"
jojo@jojo-Aspire-7720Z:~$ mon_champ="+-*/^"
jojo@jojo-Aspire-7720Z:~$ recherche="*"
jojo@jojo-Aspire-7720Z:~$ debut="${mon_champ%%${recherche}*}"
jojo@jojo-Aspire-7720Z:~$ position=$((${#debut}+1))
jojo@jojo-Aspire-7720Z:~$ echo $position
1jojo@jojo-Aspire-7720Z:~$ recherche="-"
jojo@jojo-Aspire-7720Z:~$ debut="${mon_champ%%${recherche}*}"
jojo@jojo-Aspire-7720Z:~$ position=$((${#debut}+1))
jojo@jojo-Aspire-7720Z:~$ echo $position
2jojo@jojo-Aspire-7720Z:~$ recherche="/"
jojo@jojo-Aspire-7720Z:~$ debut="${mon_champ%%${recherche}*}"
jojo@jojo-Aspire-7720Z:~$ position=$((${#debut}+1))
jojo@jojo-Aspire-7720Z:~$ echo $position
4jojo@jojo-Aspire-7720Z:~$ recherche="^"
jojo@jojo-Aspire-7720Z:~$ debut="${mon_champ%%${recherche}*}"
jojo@jojo-Aspire-7720Z:~$ position=$((${#debut}+1))
jojo@jojo-Aspire-7720Z:~$ echo $position
5jojo@jojo-Aspire-7720Z:~$ recherche="+"
jojo@jojo-Aspire-7720Z:~$ debut="${mon_champ%%${recherche}*}"
jojo@jojo-Aspire-7720Z:~$ position=$((${#debut}+1))
jojo@jojo-Aspire-7720Z:~$ echo $position
1jojo@jojo-Aspire-7720Z:~$ recherche="T"
jojo@jojo-Aspire-7720Z:~$ debut="${mon_champ%%${recherche}*}"
jojo@jojo-Aspire-7720Z:~$ position=$((${#debut}+1))
jojo@jojo-Aspire-7720Z:~$ echo $position
6Merci
modération: rajout des balises code, pour éviter aux aidants de s'esquinter la vue.
Dernière modification par xubu1957 (Le 20/04/2026, à 09:58)
Hors ligne
#46 Le 20/04/2026, à 13:20
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
je n'arrive pas à rechercher dans un champ les caractères "*" et "+"
+ est le premier caractère : il n'y a rien avant.
* doit être protégé.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#47 Le 20/04/2026, à 13:40
- JM3863
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Merci
Comment protéger le *
comment traiter la requête de Micp
Quant aux balises code , je n'ai rien compris,je pensais que la balise code évitait l'interprétation des codes causant un problème pour publier le message (erreur de balises en essayant de valider le message)
c'est pourquoi j'ai inséré (à tort a fortiori) les commandes à l'intérieur de balises "code"
JM
Hors ligne
#48 Le 20/04/2026, à 14:04
- Watael

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
~ $ mon_champ="+-*/^"
~ $ # comme ça:
~ $ recherche='\*'
~ $ echo "${mon_champ%%$recherche*}"
+-
~ $ # ou comme ça:
~ $ recherche='*'
~ $ echo "${mon_champ%%"$recherche"*}
+-
~ $Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#49 Le 20/04/2026, à 14:20
- xubu1957

Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Dans le mémento des balises code :
- les règles du forum > balises BB code :
Balise CODE :
C'est la balise à utiliser pour donner de longs messages d'erreurs, des contenus de fichiers de configuration, des commandes à taper, etc … Elle permet des messages plus "compacts", et est moins ambiguë que d'autres polices sur certains caractères.
Modération : les balises code ont pour but de
- séparer le texte de commentaire ou de question des retours de commande.
- de condenser le retour de commande dans une fenêtre sur fond noir, ce qui permet de lire le retour avec la police système, supprimant les confusions de l et des i par exemple. De même les retours très longs sont dans une fenêtre à hauteur limitée, dans laquelle on peut se déplacer avec les ascenseurs verticaux et parfois horizontaux.
- de voir les retours au format système, avec les tableaux bien alignés, par exemple.
(c'est le même bouton, qu'il s'agisse de code, de retour de commande, de liste de fichiers et répertoires, etc. : ça permet de limiter les longues listes dans un cadre de dimension raisonnable, et de mettre en forme en police monospace, et globalement de savoir qu'il s'agit d'infos système techniques.)
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [ Résolu ] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
Hors ligne
#50 Le 20/04/2026, à 16:25
- MicP
Re : Je reviens Rechercher la position d'une chaine de caract dans un champ
Bonjour
… avec A (présent) ou N(absent) la valeur de $(( ${#BASH_REMATCH[1]} )) est à zéro …
Si recherche a bien été trouvé dans machaine, alors la ligne de commande que j'ai proposé retournera la valeur de la position de recherche dans machaine
(et si recherche a bien été trouvé dans machaine alors le code d'erreur retourné par l'exécution de la ligne de commande sera : zéro)
mic@deb1210:~$ machaine="ABCDEFGHIJKLM"
mic@deb1210:~$ recherche="A"
mic@deb1210:~$ [[ $machaine =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
1
mic@deb1210:~$ echo "Code d'erreur retourné : $?"
Code d'erreur retourné : 0
mic@deb1210:~$ =======
Mais si recherche n'a PAS été trouvé dans machaine alors la ligne de commande ne retournera rien du tout.
(et le code d'erreur retourné par l'exécution de la ligne de commande sera : 1)
mic@deb1210:~$ machaine="ABCDEFGHIJKLM"
mic@deb1210:~$ recherche="N"
mic@deb1210:~$ [[ $machaine =~ (.*)$recherche ]] && echo $(( ${#BASH_REMATCH[1]} + 1 ))
mic@deb1210:~$
mic@deb1210:~$ echo "Code d'erreur retourné : $?"
Code d'erreur retourné : 1
mic@deb1210:~$ Ci-dessus, recherche n'a PAS été trouvé dans machaine => l'exécution de la ligne de commande ne donne aucun retour, et le code d'erreur retourné est à 1
=======
En utilisant le code d'erreur retourné par la commande interne bash [[
on pourrait faire :
if [[ $machaine =~ (.*)$recherche ]]; then
echo "'$recherche' a été trouvé au caractère N°$((${#BASH_REMATCH[1]}+1)) de '$machaine'."
else
echo "'$recherche' n'a PAS été trouvé dans '$machaine'."
fi=======
Si je donne comme valeurs :
recherche="xyz"
machaine=" x y z ABC xyz edc"La ligne de commandes ci-dessous :
if [[ $machaine =~ (.*)$recherche ]]; then echo "'$recherche' a été trouvé au caractère N°$((${#BASH_REMATCH[1]}+1)) de '$machaine'."; else echo "'$recherche' n'a PAS été trouvé dans '$machaine'."; fidonnera :
'xyz' a été trouvé au caractère N°14 de ' x y z ABC xyz edc'.=======
Mais si je donne comme valeurs :
recherche="bonjour"
machaine=" x y z ABC xyz edc"le retour de la même ligne de commandes donnera :
'bonjour' n'a PAS été trouvé dans ' x y z ABC xyz edc'.=======
NOTE : Code d'erreur <=> code de retour <=> exit code <=> status code <=> exit status
Dernière modification par MicP (Le 20/04/2026, à 17:37)
Hors ligne