Vous êtes sur la page 1sur 4

(/fr/)

Accueil (../../fr/)
> Forum (../)
> Systèmes d'exploitation (https://openclassrooms.com/forum/categorie/systemes-d-exploitation)
> Linux & FreeBSD
(https://openclassrooms.com/forum/categorie/linux-freebsd)
> script shell

Liste des forums  


(/forum/)

script shell (/forum/sujet/script-shell-12253) Partage

mettre un nombre decimal en binaire


Sujet résolu

Eternel
(/fr/memb
ers/95kw4
78v99k9)

(/fr/members/95kw478v99k9)

24 novembre 2011 à 13:33:25

bonjour, je dois faire un script shell pour mettre un nombre en


binaire, mais mon script plante a la ligne 22 a cause du tableau que
j'utilise, je vous montre mon script :

1 echo "Entrer un nombre : "


2 read nombre
3  
4 declare -a binaire
5 i=0
6  
7 while [ $nombre != 0 ]
8 do
9     if [ $nombre%2=0 ]
10     then
11         binaire[$i]=0
12     else
13         binaire[$i]=1
14     fi
15      
16     let nombre=$nombre/2
17     let i=$i+1
18 done
19  
20 while [ $i>=0 ]
21 do
22     echo ${binaire[$i]}
23     let i=$i-1
24 done

voila donc ici ligne 22 d'après le pc rien ne va plus, il m'affiche l'erreur


suivante :

ligne 22: binaire: mauvais indice de tableau

qu'elle qu'un aurai une idée ?

-Oromis-
(/fr/memb
ers/m3b5b
psjbzs5)

(/fr/members/m3b5bpsjbzs5)

24 novembre 2011 à 15:45:29

il y a un autre probleme dans ton code, si on fait un echo de ton


tableau en ayant rentrer 12 il n'y a que des 0

1 #!/bin/bash
2 echo "Entrer un nombre : "
3 read nombre
4  
5 declare -a binaire
6 i=0
7  
8 while [ $nombre != 0 ]
9 do
10     if [ $nombre%2=0 ]
11     then
12         binaire[$i]=0
13     else
14         binaire[$i]=1
15     fi
16      
17     let nombre=$nombre/2
18     let i=$i+1
19 done
20 echo ${binaire[*]}

millman
(/fr/memb
ers/q0ds17
vxfp23)

(/fr/members/q0ds17vxfp23)

24 novembre 2011 à 20:22:06

Un man test te donneras la réponse.

Edit:

Mais comme je suis gentil voici la problème.

!= et = sont des comparateurs pour des strings >= n'existe pas. Et faut
utiliser -ne -eq et -ge.

1 #!/bin/bash
2 echo "Entrer un nombre : "
3 read nombre
4  
5 declare -a binaire
6 i=0
7  
8 while [ $nombre -ne 0 ]
9 do
10     modulo=`expr $nombre % 2`
11     if [ $modulo -eq 0 ]
12     then
13         binaire[$i]=0
14     else
15         binaire[$i]=1
16   fi
17     nombre=`expr $nombre / 2`
18     i=`expr $i + 1 `
19 done
20  
21 while [ $i -ge 0 ]
22 do
23     echo ${binaire[$i]}
24     i=`expr $i - 1 `
25 done

script shell

Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié. ×

Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta ×
question.

Editeur ● Markdown
Répondre

OPENCLASSROOMS

OPPORTUNITÉS

AIDE

POUR LES ENTREPRISES

EN PLUS

Français
 

book.com/openclassroomsfr/)
ttps://twitter.com/ocfrance)
www.linkedin.com/company/openclassrooms)
(https://instagram.com/openclassrooms)
(https://www.youtube.com/user/TheOpenClassrooms)

(https://itunes.apple.com/fr/app/openclassrooms-
cours-en-ligne/id1164140533?
pt=118427510&ct=FooterWeb&mt=8)

Vous aimerez peut-être aussi