Recherche de site Web

Calcul d'expressions mathématiques dans le langage de script Shell - Partie V


Vous vous sentirez à l'aise, comprendrez les scripts Shell et les écrirez couramment, selon vos besoins. Ceci est le dernier article de cette série de didacticiels, dans lequel nous effectuerons des opérations mathématiques un peu complexes à l'aide d'un langage de script. Les quatre derniers articles de la série Shell Scripting qui sont classés chronologiquement.

  1. Comprendre les conseils de base du langage de script Linux Shell – Partie I
  2. 5 scripts Shell pour les débutants Linux pour apprendre la programmation Shell – Partie II
  3. Naviguer à travers le monde des scripts Linux BASH – Partie III
  4. Aspect mathématique de la programmation Linux Shell – Partie IV

Commençons par la série de Fibonacci

Une suite de nombres où chaque nombre est la somme de deux nombres précédents. La série est 0,1, 1, 2, 3, 5, 8…… Par définition, les deux premiers nombres de la séquence Fibonccai sont 0 et 1.

Script 1 : Fibonacci.sh
#!/bin/bash
echo "How many numbers do you want of Fibonacci series ?" 
  read total 
  x=0 
  y=1 
  i=2 
  echo "Fibonacci Series up to $total terms :: " 
  echo "$x" 
  echo "$y" 
  while [ $i -lt $total ] 
  do 
      i=`expr $i + 1 ` 
      z=`expr $x + $y ` 
      echo "$z" 
      x=$y 
      y=$z 
  done
Exemple de sortie
[root@tecmint ~]# chmod 755 Fibonacci.sh
[root@tecmint ~]# ./Fibonacci.sh

How many numbers do you want of Fibonacci series ? 
10 
Fibonacci Series up to 10 terms :: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

Télécharger Fibonacci.sh

Vous êtes familier avec le fait que l'ordinateur ne comprend qu'au format binaire, c'est-à-dire '0' et '1' et la plupart d'entre nous ont aimé apprendre la conversion de Décimal à Binaire. Que diriez-vous d'écrire un script simple pour cette opération complexe.

Script 2 : Decimal2Binary.sh
#!/bin/bash 

for ((i=32;i>=0;i--)); do 
        r=$(( 2**$i)) 
        Probablity+=( $r  ) 
done 

[[ $# -eq 0 ]] &echo -en "Decimal\t\tBinary\n" 
for input_int in $@; do 
s=0 
test ${#input_int} -gt 11 &printf "%-10s\t" "$input_int" 

        for n in ${Probablity[@]}; do 

                if [[ $input_int -lt ${n} ]]; then 
                        [[ $s = 1 ]] && printf "%d" 0 
                else 
                        printf "%d" 1 ; s=1 
                        input_int=$(( $input_int - ${n} )) 
                fi 
        done 
echo -e 
done
Exemple de sortie
[root@tecmint ~]# chmod 755 Decimal2Binary.sh
[root@tecmint ~]# ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

Remarque : Le script ci-dessus accepte les entrées au moment de l'exécution, ce qui est évidemment une aide.

Télécharger Decimal2Binary.sh

Eh bien, la commande intégrée « bc » peut convertir un décimal en binaire dans un script sur une seule ligne. Courez, à votre terminal.

[root@tecmint ~]# echo "obase=2; NUM" | bc

Remplacez « NUM » par le nombre que vous souhaitez convertir de Décimal en Binaire. Par exemple,

[root@tecmint ~]# echo "obase=2; 121" | bc 

1111001

Ensuite, nous allons écrire un script qui fonctionne juste à l'opposé du script ci-dessus, Conversion de valeurs binaires en Décimale.

Script 3 : Binary2Decimal.sh
#!/bin/bash 
echo "Enter a number :" 
read Binary 
if [ $Binary -eq 0 ] 
then 
echo "Enter a valid number " 
else 
while [ $Binary -ne 0 ] 
do 
Bnumber=$Binary 
Decimal=0 
power=1 
while [ $Binary -ne 0 ] 
do 
rem=$(expr $Binary % 10 ) 
Decimal=$((Decimal+(rem*power))) 
power=$((power*2)) 
Binary=$(expr $Binary / 10) 
done 
echo  " $Decimal" 
done 
fi
Exemple de sortie
[root@tecmint ~]# chmod 755 Binary2Decimal.sh
[root@tecmint ~]# ./Binary2Decimal.sh

Enter a number : 
11 
3

Remarque : La fonction ci-dessus peut être exécutée dans le terminal à l'aide de la commande 'bc' en tant que.

[root@tecmint ~]# echo "ibase=2; BINARY" | bc

Remplacez « BINARY » par le nombre binaire, à savoir :

[root@tecmint ~]# echo "ibase=2; 11010101" | bc 

213

Télécharger Binary2Decimal.sh

De même, vous pouvez écrire vous-même la conversion de octal, hexadécimal à décimal et vice-versa. Obtenir le résultat ci-dessus dans le terminal à l'aide de la commande 'bc' est possible.

Décimal à octal
[root@tecmint ~]# echo "obase=8; Decimal" | bc
Décimal à Hexadécimal
[root@tecmint ~]# echo "obase=16; Decimal" | bc
Octal à décimal
[root@tecmint ~]# echo "ibase=8; Octal" | bc
Hexadécimal à décimal
[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc
Binaire vers Octal
[root@tecmint ~]# echo "ibase=2;obase=8 Binary" | bc

Certains des tests Common Numeric utilisés dans le langage de script shell avec description le sont.

Test : INTEGER1 -eq INTEGER2
Meaning: INTEGER1 is equal to INTEGER2
Test : INTEGER1 -ge INTEGER2
Meaning: INTEGER1 is greater than or equal to INTEGER2
Test: INTEGER1 -gt INTEGER2
Meaning: INTEGER1 is greater than INTEGER2
Test:INTEGER1 -le INTEGER2
Meaning: INTEGER1 is less than or equal to INTEGER2
Test: INTEGER1 -lt INTEGER2
Meaning: INTEGER1 is less than INTEGER2
Test: INTEGER1 -ne INTEGER2
Meaning: INTEGER1 is not equal to INTEGER2

C'est tout pour cet article et la série d'articles. Ceci est le dernier article de la Shell Script Series et cela ne signifie pas qu'aucun article sur le langage de script ne sera plus là, cela signifie simplement que le didacticiel sur les scripts Shell est terminé et que chaque fois que nous trouvons un sujet intéressant qui mérite d'être connu. ou une question de votre part, nous serons heureux de continuer la série à partir d'ici.

Restez en bonne santé, à l'écoute et connecté à Tecmint. Très bientôt, je viendrai avec un autre sujet intéressant, vous adorerez le lire. Partagez vos précieuses réflexions dans la Section des commentaires.