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 27/12/2011, à 10:27

Hizoka

[resolu] variable numerique avec une base

Bonjour,

j'ai bien galéré pour trouver un titre au topic...

alors quelques explications...

for ((i=1; i<15; i++)); do echo "$i"; done
=> 1, 2...14, 15

mais je voudrais qu'il me donne

=> 01, 02...14, 15

j'avais cherché il y a quelques mois et j'avais trouvé ça :

10#${variable} : En bash, il est possible d'exprimer des nombres en précisant leur base via la notation [base#]nombre. ici, c'est la base 10 (décimal).

et de memoire, ça passait... mais je n'arrive plus à l'utiliser...

et pour retirer les 0 "inutiles" :

$((10#${variable})) : "Evaluation" de 10#${variable}. Cela permet de supprimer les "0" se trouvant en début de nombre. Il est impératif de préciser la base car si un nombre commence par 0, il est considéré comment étant exprimé en hoctal.

qui lui fonctionne :

var=007
echo "Le resultat sans les 0 : $((10#${var}))"
=> Le resultat sans les 0 : 7

je recherche donc soit la bonne façon d'utiliser 10#${variable} ou une autre technique si ca passe plus...
en faisant au plus simple.

car il est possible de faire :

[[ ${var} == [0-9] ]] && var="0${var}"

ou

[[ ${var} -lt 10 ]] && var="0${var}"

Dernière modification par Hizoka (Le 27/12/2011, à 16:34)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 27/12/2011, à 10:30

credenhill

Re : [resolu] variable numerique avec une base

hello

 for ((i=1; i<15; i++)); do printf "%02d\n" $i; done

ou

$ echo {01..15}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

ou

$ seq -w 1 15

Dernière modification par credenhill (Le 27/12/2011, à 10:45)

Hors ligne

#3 Le 27/12/2011, à 11:05

Hizoka

Re : [resolu] variable numerique avec une base

ok, mon exemple était pas bon en fait smile

je traite un fichier avec des infos dedans et j'en recupere des trucs comme ca :

ID | nom fichier | extension
${ID} | ${fichier} | ${ext}
1 | super fichier | avi
2 | petit fichier | mp3
...
15 | dernier fichier | mkv

donc à chaque ligne, je dois verifier s'il y a un 0 au debut  de l'ID ou non.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 27/12/2011, à 11:14

Postmortem

Re : [resolu] variable numerique avec une base

Salut,
Suis pas sûr d'être sûr... Mais est ce que ceci irait ??

$ cat test.txt
ID | nom fichier | extension
${ID} | ${fichier} | ${ext}
1 | super fichier | avi
2 | petit fichier | mp3
003 | truc | mp3
04 | cccccc | mpg
15 | dernier fichier | mkv

$ while IFS='|' read ID FIC EXT
> do
> [[ $ID == 0* ]] && echo "$ID commence par un 0"
> done < test.txt
003  commence par un 0
04  commence par un 0

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#5 Le 27/12/2011, à 11:18

Hizoka

Re : [resolu] variable numerique avec une base

ouais mais ca revient au même que ce que je proposais :

[[ ${var} == [0-9] ]] && var="0${var}"
ou
[[ ${var} -lt 10 ]] && var="0${var}"

je cherche un peu une solution fullbash afin d'eviter une verification "inutile".


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 27/12/2011, à 12:02

pingouinux

Re : [resolu] variable numerique avec une base

Salut,
En définitive, quel est le but de la manœuvre ? Ce serait plus facile pour proposer une solution.

Hors ligne

#7 Le 27/12/2011, à 12:12

Postmortem

Re : [resolu] variable numerique avec une base

Comme ça ?

$ var=0008
$ shopt -s extglob
$ echo ${var##+(0)}
8
$ var=10
$ echo ${var##+(0)}
10

Dernière modification par Postmortem (Le 27/12/2011, à 12:14)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 27/12/2011, à 13:25

Watael

Re : [resolu] variable numerique avec une base

salut,

Je ne trouve pas plus simple que l'évaluation arithmétique.

$ var=007
$ ((var=10#$var))
$ echo $var
7

Ce que tu proposes avant fonctionne quand la variable qui contiendra le résultat est déclarée en tant que nombre

$ declare -i var1
$ read -p'> ' var0
> 007
$ var1=10#$var0
$ echo $var1
7

C'est pareil pour d'autres opérations

$ declare -i var3
$ var2=2
$ var3=$var1+$var2
$ echo $var3
9

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

Hors ligne

#9 Le 27/12/2011, à 15:42

credenhill

Re : [resolu] variable numerique avec une base

et avec:

$ v=1
$ vv=$(($v+100))
$ echo ${vv:1}
01
$ 
$ v=12
$ vv=$(($v+100))
$ echo ${vv:1}
12
$ 

Hors ligne

#10 Le 27/12/2011, à 16:34

Hizoka

Re : [resolu] variable numerique avec une base

dommage que  ca ne passe plus.

Merci pour vos solutions smile

je vais voir laquelle je choisis smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne