Variabile numerice în Bash

Introducere în Bash Scripting

Alex Scriven

Data Scientist

Numere în alte limbaje

Numerele nu sunt suportate nativ în shell, spre deosebire de REPL-uri (consolă) precum R și Python

În Python sau R puteți scrie:

>>> 1 + 4
5

Și obțineți rezultatul dorit!

Introducere în Bash Scripting

Numere în shell

 

Numerele nu sunt suportate nativ:

(În terminal)

1 + 4
bash: 1: command not found
Introducere în Bash Scripting

Introducere în expr

 

expr este un program utilitar (similar cu cat sau grep)

Aceasta va funcționa acum (în terminal):

expr 1 + 4
5

Excelent!

Introducere în Bash Scripting

Limitările expr

expr nu poate gestiona nativ zecimalele:

(În terminal)

expr 1 + 2.5
expr: not a decimal number: '2.5'

Nu vă faceți griji! (Există o soluție)

Introducere în Bash Scripting

Introducere în bc

bc (basic calculator) este un program util în linia de comandă.

Îl puteți lansa în terminal și efectua calcule:

Utilizarea programului BC în shell

Introducere în Bash Scripting

Trimiterea numerelor către bc

 

Utilizarea bc fără a deschide calculatorul este posibilă prin piping:

echo "5 + 7.5" | bc
12.5
Introducere în Bash Scripting

Argumentul scale în bc

bc are și un argument scale pentru numărul de zecimale.

echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc

Notați utilizarea ; pentru a separa „liniile" în terminal

3.333
Introducere în Bash Scripting

Numere în scripturile Bash

Variabilele numerice se atribuie la fel ca cele de tip șir:

dog_name='Roger'
dog_age=6

echo "My dog's name is $dog_name and he is $dog_age years old"

Atenție: dog_age="6" funcționează, dar o transformă în șir!

My dog's name is Roger and he is 6 years old
Introducere în Bash Scripting

Notația cu paranteze duble

O variantă a notației cu paranteze simple pentru variabile numerice:

expr 5 + 7
echo $((5 + 7))
12
12

Atenție: această metodă folosește expr, nu bc (fără zecimale!)

Introducere în Bash Scripting

Shell în shell, revizitat

Vă amintiți cum am apelat shell-ul din lecția anterioară?

Folositor în special pentru variabile numerice:

model1=87.65
model2=89.20

echo "The total score is $(echo "$model1 + $model2" | bc)"
echo "The average score is $(echo "($model1 + $model2) / 2" | bc)"
The total score is 176.85
The average score is 88
Introducere în Bash Scripting

Să exersăm!

Introducere în Bash Scripting

Preparing Video For Download...