#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
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
je vais voir laquelle je choisis
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne