Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Expression régulière !

16 réponses
Avatar
Luxpopuli Open source
--e89a8f2359a9b032c104b2013443
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Bonjour,

Je m'arrache les cheveux sur une test:

Dans un script bash, j'ai besoin de contr=F4ler que la valeur taper par
l'utilisateur est comprise dans l'intervalle [-16, 16]
Et franchement, je n'arrive =E0 rien du tout.

S'il y a un pro des expressions r=E9guli=E8res, je le b=E9nis d'avance de b=
ien
vouloir voler =E0 mon secours ! ;-)

Pascal

--e89a8f2359a9b032c104b2013443
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Bonjour,<br><br>Je m&#39;arrache les cheveux sur une test: <br><br>Dans un =
script bash, j&#39;ai besoin de contr=F4ler que la valeur taper par l&#39;u=
tilisateur est comprise dans l&#39;intervalle [-16, 16]<br>Et franchement, =
je n&#39;arrive =E0 rien du tout.<br>
<br>S&#39;il y a un pro des expressions r=E9guli=E8res, je le b=E9nis d&#39=
;avance de bien vouloir voler =E0 mon secours ! ;-)<br><br>Pascal<br>

--e89a8f2359a9b032c104b2013443--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/CANi7RhT13CUpv3KKQYwbNQKjNSZDsek+ZYWX=b0enGW6dzOwcg@mail.gmail.com

6 réponses

1 2
Avatar
Luxpopuli Open source
--20cf304349306682b904b206f573
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Merci Nicolas,

A partir de ta réponse j'ai créé celle-ci qui fonctionne très bien:

if [[ $1 =~ ^[-+]?[0-9]{1}$ ]] || [[ $1 =~ ^[-+]?[1]{1}[0-6]{1}$ ]]; then
echo "oui";
else
echo "non";
fi
exit

Merci encore,

Pascal

Le 18 novembre 2011 16:50, Nicolas Bercher a écrit :

Je ne suis pas certain que ceci soit correct:

if [[ $1 != [-0-9] ]];then

Je ne suis pas un expert, mais je ne saurais dire ce que cela signifie
puisque [-0-9] semble être un motif que bash va tenter de faire
correspondre aux fichiers présents dans "./". A défaut de trouver que lque
chose au niveau de bash, ceci semble robuste:

if ! echo "${1}" | grep "^[+-]?[0-9]+$"; then

ou plus implement cela (après la lecture du man de bash):

if [[ ! $1 =~ ^[-+]?[0-9]+$ ]]; then


Ces deux solutions supportent le signe "+".


Nicolas


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive:
http://lists.debian.org/ ahoo.com





--20cf304349306682b904b206f573
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Merci Nicolas,<br><br>A partir de ta réponse j&#39;ai créé celle-ci q ui fonctionne très bien:<br><br>if [[ $1 =~ ^[-+]?[0-9]{1}$ ]] || [[ $ 1 =~ ^[-+]?[1]{1}[0-6]{1}$ ]]; then<br> echo &quot;oui&quot;;<br>else< br> echo &quot;non&quot;;<br>
fi<br>exit<br><br>Merci encore,<br><br>Pascal<br><br><div class="gmail_qu ote">Le 18 novembre 2011 16:50, Nicolas Bercher <span dir="ltr">&lt;<a hr ef="mailto:"></a>&gt;</span> a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1p x #ccc solid;padding-left:1ex;">Je ne suis pas certain que ceci soit correc t:<br>
<div class="im"><br>
  if [[ $1 != [-0-9] ]];then<br>
<br>
</div>Je ne suis pas un expert, mais je ne saurais dire ce que cela signifi e puisque [-0-9] semble être un motif que bash va tenter de faire corresp ondre aux fichiers présents dans &quot;./&quot;. A défaut de trouver qu elque chose au niveau de bash, ceci semble robuste:<br>

<br>
  if ! echo &quot;${1}&quot; | grep &quot;^[+-]?[0-9]+$&quot;; then<b r>
<br>
ou plus implement cela (après la lecture du man de bash):<br>
<br>
  if [[ ! $1 =~ ^[-+]?[0-9]+$ ]]; then<br>
<br>
<br>
Ces deux solutions supportent le signe &quot;+&quot;.<br>
<br>
<br>
Nicolas<br>
<div class="im"><br>
<br>
--<br>
Lisez la FAQ de la liste avant de poser une question :<br>
<a href="http://wiki.debian.org/fr/FrenchLists" target="_blank">http:// wiki.debian.org/fr/FrenchLists</a><br>
<br>
Pour vous DESABONNER, envoyez un message avec comme objet &quot;unsubscribe &quot;<br>
vers <a href="mailto:">debian- </a><br>
En cas de soucis, contactez EN ANGLAIS <a href="mailto: ebian.org"></a><br>
</div>Archive: <a href="http://lists.debian.org/1321631423.84063.YahooMai " target="_blank">http://lists.debian.org /</a><br>
<br>
</blockquote></div><br>

--20cf304349306682b904b206f573--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/CANi7RhQCfq00_c6Vcm2Z=vn6zuw+
Avatar
Stéphane Goujet
Le Fri, 18 Nov 2011 19:34:16 +0100,
"Jean-Yves F. Barbier" a écrit :

Non, simplement parce que > ou < prend bcp moins de cycles CPU que > > ou =<



Sur quelle architecture ?

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Jean-Yves F. Barbier
On Fri, 18 Nov 2011 20:18:58 +0100
Stéphane Goujet wrote:

Le Fri, 18 Nov 2011 19:34:16 +0100,
"Jean-Yves F. Barbier" a écrit :

> Non, simplement parce que > ou < prend bcp moins de cycles CPU que >=
> ou =<

Sur quelle architecture ?



Actuellement et autant que je sache, toutes (même si le pipeline permet
de réduire artificiellement le Nb de cycles).

--
It was Penguin lust... at its ugliest.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sylvain L. Sauvage
Le vendredi 18 novembre 2011 à 19:34:16, Jean-Yves F. Barbier a
écrit :
[… du shell …]
Non, simplement parce que > ou < prend bcp moins de cycles
CPU que >= ou =<

Dans le cas présent c'est trivial, dans le cas d'une fonction
DB testant une multitude de cas ou d'un PGM temps réel ou
bien tournant sur une carte embarquée c'est très important;
et c'est une bonne habitude à prendre.



Et un appel de fonction, c’est des dizaines de cycles !
N’écrivez jamais de fonction. Faites un code monobloc. Prenez de
bonnes habitudes.

Et les boucles, c’est des sauts inutiles ! Remplacez-les par
du copier-coller. Prenez de bonnes habitudes.

Et, et, et…

Heureusement qu’on n’est pas vendredi… ah si, tie ns, oups…

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Stéphane Goujet
Le Fri, 18 Nov 2011 20:34:09 +0100,
"Jean-Yves F. Barbier" a écrit :

On Fri, 18 Nov 2011 20:18:58 +0100
Stéphane Goujet wrote:
> Le Fri, 18 Nov 2011 19:34:16 +0100,
> "Jean-Yves F. Barbier" a écrit :
> > Non, simplement parce que > ou < prend bcp moins de cycles CPU
> > que >= ou =<
> Sur quelle architecture ?
Actuellement et autant que je sache, toutes (même si le pipeline
permet de réduire artificiellement le Nb de cycles).



Ben, ce n'est pas le cas sur 6809, 8051, 8086 jusqu'à AMD64 et
Intel64, ARM, etc., ce qui paraît normal vu qu'il ne s'agit que de
tester un ou deux flags après la même opération.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Yves Rutschle
On Fri, Nov 18, 2011 at 07:34:16PM +0100, Jean-Yves F. Barbier wrote:
Non, simplement parce que > ou < prend bcp moins de cycles CPU que >= ou =<



1. On parle de script shell, où l'on jete les cycles CPU par
milliers rien que pour s'amuser.

2. C'est faux au moins pour l'architecture ARM, qui sait
faire l'un et l'autre, et en signé ou en non signé s'il vous
plait.

3. Sur les architectures handicappées, c'est au compilateur
de se démerder et de transformer (a >= b) en (a > b-1) si
c'est mieux. Rendre du code moins lisible pour pallier à un
defaut du compilateur, c'est Mal.

Y.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2