En fait, je voudrais créer un script qui convertit l’adresse ip en binaire.
Enfin, j’ai déjà créé le script et je veux l’optimiser en mettant une boucle “for” :
[code]#! /bin/sh
#echo “Entrez votre adresse IP :”
#read rep
echo $rep
conv_bin () {
oct1=${rep%%.}
rl1=${rep#.}
oct2=${rl1%%.}
rl2=${rl1#.}
oct3=${rl2%%.}
oct4=${rl2#.}
for (( i=1 ; i<=4 ; i++ ))
do
case $[oct$i] in
’1’)
declare -a tab$i[32]
tab$i[1]=0;tab$i[2]=0;tab$i[3]=0;tab$i[4]=0;tab$i[5]=0;tab$i[6]=0;tab$i[7]=0;tab$i[8]=1
;;
‘2’)
declare -a tab$i[32]
tab$i[1]=0;tab$i[2]=0;tab$i[3]=0;tab$i[4]=0;tab$i[5]=0;tab$i[6]=0;tab$i[7]=1;tab$i[8]=0
;;
…
…
‘255’)
declare -a tab$i[32]
tab$i[1]=1;tab$i[2]=1;tab$i[3]=1;tab$i[4]=1;tab$i[5]=1;tab$i[6]=1;tab$i[7]=1;tab$i[8]=1
;;
*)
esac
done
echo "L’adresse : $oct1.$oct2.$oct3.$oct4 vaut en binaire :"
echo “${tab1[]} / ${tab2[]} / ${tab3[]} / ${tab4[]}”
declare -a tab[32]
j=1;k=1;l=1;m=1
for (( i=1 ; i<=8 ; i++ ))
do
tab[i]=echo ${tab1[j]}
j=expr $j + 1
done
for (( i=9 ; i<=16 ; i++ ))
do
tab[i]=echo ${tab2[k]}
k=expr $k + 1
done
for (( i=17 ; i<=24 ; i++ ))
do
tab[i]=echo ${tab3[l]}
l=expr $l + 1
done
for (( i=24 ; i<=32 ; i++ ))
do
tab[i]=echo ${tab4[m]}
m=expr $m + 1
done
echo " – "
echo ${tab[*]}
}[/code]
Grâce aux crochets, ça fonctionne, par contre c’est le “declare -a tab$i[32]” qui ne passe pas maintenant…