Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/02/2016, à 15:16

Rob414

[RESOLU] Script shell sous linux

Bonjour,

je préviens, pour éviter les sourires en coin, je suis juste un bidouilleur et ne me qualifie en aucun cas de programmeur ou développeur.
Ceci dit, dans un script shell sous linux RedHat, méthode simple pour supprimer les zero inutiles devant un nombre, 0015--->15  j'ai besoin de faire une addition comme suit :
#!/bin/sh
echo "n'importe quoi ?"
read r
echo $(($r+0))

or le résultat est inattendu :
$ toto.sh
n'importe quoi ?
0015
13

autre curiosité :
$ toto.sh
n'importe quoi ?
009
./toto.sh: line 5: 009: valeur trop grande pour la base (error token is "009")

et ce à partir du chiffre 8
et jusque à 7 c'est OK :
$ toto.sh
n'importe quoi ?
007
7

à noter que ça fonctionne tres bien sous unix AIX
Quelqu'un à une idée ?

Dernière modification par Rob414 (Le 14/03/2016, à 15:35)

Hors ligne

#2 Le 24/02/2016, à 15:36

Inglebard

Re : [RESOLU] Script shell sous linux

Salut,
Je suppose que le faite de mettre un '0' devant te fait passer en base 8:
(15)8 = (13)10

Alors je ne connais pas toute la doc mais je suppose que ça doit être marqué quelque part.

Hors ligne

#3 Le 24/02/2016, à 16:36

pingouinux

Re : [RESOLU] Script shell sous linux

Bonjour,
Je confirme le diagnostic de Inglebard : si le nombre commence par 0, c'est de l'octal.
Voici une méthode pour virer les zéros qui précèdent un autre chiffre :

r=0015
r=$(sed -r 's/^0+([1-9])/\1/' <<<"$r")
echo $r

Résultat

15

Hors ligne

#4 Le 24/02/2016, à 18:23

Watael

Re : [RESOLU] Script shell sous linux

oh, le marteau-pneumatique !

$ r=0015
$ r=${r##*0}
$ echo $r
15

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 24/02/2016, à 18:33

pingouinux

Re : [RESOLU] Script shell sous linux

Watael a écrit :

oh, le marteau-pneumatique !

Je n'ai pas trouvé plus simple, car

$ r=10015
$ r=${r##*0}
$ echo $r
15

Hors ligne

#6 Le 24/02/2016, à 18:39

Inglebard

Re : [RESOLU] Script shell sous linux

Après il est possible de faire plus simple si tu peux utiliser bash :

10# permet de dire quel base tu veux utiliser

echo $((10#09*2))
18

Source : http://unix.stackexchange.com/questions … as-decimal

Hors ligne

#7 Le 24/02/2016, à 18:46

pingouinux

Re : [RESOLU] Script shell sous linux

Merci Inglebard, je ne connaissais pas…

Hors ligne

#8 Le 24/02/2016, à 20:42

HP

Re : [RESOLU] Script shell sous linux

Perso, j'utilise bc.


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#9 Le 25/02/2016, à 09:29

credenhill

Re : [RESOLU] Script shell sous linux

hello

pingouinux a écrit :
Watael a écrit :

oh, le marteau-pneumatique !

Je n'ai pas trouvé plus simple, car

$ r=10015
$ r=${r##*0}
$ echo $r
15
$ r=0015
$ echo ${r##+(0)}
15
$ r=10015
$ echo ${r##+(0)}
10015

Hors ligne

#10 Le 25/02/2016, à 09:55

HP

Re : [RESOLU] Script shell sous linux

# bc <<< 0015
15
# bc <<< 10015
10015

cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#11 Le 25/02/2016, à 10:04

pingouinux

Re : [RESOLU] Script shell sous linux

Finalement, on n'a que l'embarras du choix… Merci smile

Hors ligne

#12 Le 25/02/2016, à 10:08

Watael

Re : [RESOLU] Script shell sous linux

que ce soit sed ou bc, quand ça peut être fait par bash, seul, c'est toujours dispendieux.

j'aime bien la formule donnée par Credenhill, mais je préfère l'évaluation arithmétique fournie par Inglebard.
+1 chacun wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 14/03/2016, à 15:34

Rob414

Re : [RESOLU] Script shell sous linux

Bonjour à tous, et mille excuses pour le retard.
Merci pour vos réponses, j'ai utilisé bc :
$ var=0015
$ echo "$var+0" |bc
15

J'étais loin de penser à l'octal !.

A la prochaine fois.

Hors ligne