Additionner des variables string shell,bash

Fermé
glardz Messages postés 26 Date d'inscription mardi 24 mai 2016 Statut Membre Dernière intervention 17 juillet 2016 - Modifié par glardz le 24/05/2016 à 11:16
glardz Messages postés 26 Date d'inscription mardi 24 mai 2016 Statut Membre Dernière intervention 17 juillet 2016 - 24 mai 2016 à 11:44
Bonjour,

j'ai un fichier log.txt avec

bpc19;BC02;SLOT05
bpc20;BC02;SLOT06
bpc21;BC02;SLOT07
bpc22;BC02;SLOT08
bpc23;BC02;SLOT09
bpc24;BC02;SLOT10
bpc26;BC02;SLOT12
bpc27;BC02;SLOT13
bpc28;BC02;SLOT14
bdbm;BC01;SLOT00

et je veux faire +1 pour chaque valeur de slot , le code en bash est :

#!/bin/bash

while read line
do


slot_number=$(echo "$line" | cut -d';' -f3 | cut -d'T' -f2 )
slot_number=$slot_number | bc

slot_numberplusone=$((1+slot_number))

echo "slot_number=$slot_number"
echo "slot_number+1=$slot_numberplusone\n"

done < log.txt

le résultat est :

slot_number=03
slot_number+1=4

slot_number=04
slot_number+1=5

slot_number=05
slot_number+1=6

slot_number=06
slot_number+1=7

slot_number=07
slot_number+1=8

test.sh: 33: test.sh: Illegal number: 08


je sais pas pourquoi il s’arrête à 8 .

je vous remercie d'avance pour vos réponses ;)

1 réponse

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 24/05/2016 à 11:27
hello
parce qu'un nombre qui commence par 0 est considéré en base 8, donc 08 et 09 sont illégaux, il faut enlever le 0
$ x=08
$ echo $((x+1))
bash: 08: value too great for base (error token is "08")
$ x=${x##0}
$ echo $((x+1))
9
0
glardz Messages postés 26 Date d'inscription mardi 24 mai 2016 Statut Membre Dernière intervention 17 juillet 2016
24 mai 2016 à 11:32
est-il possible d'enlever le 0 et ainsi additionné ?
0
glardz Messages postés 26 Date d'inscription mardi 24 mai 2016 Statut Membre Dernière intervention 17 juillet 2016
24 mai 2016 à 11:44
merci pour la réponse j'ai fait slot_number=${slot_number##0}
0