Bash умеет целые числа прямо в $(( )):
echo $(( 10 * 3 + 5 )) # 35
echo $(( 2 ** 10 )) # 1024
Для дробей — bc. Ключ -l даёт sqrt, sin, log:
echo "scale=4; sqrt(2)" | bc -l # 1.4142
echo "scale=2; 355/113" | bc # 3.14
awk считает float в одну строку — удобно когда уже парсишь вывод:
awk 'BEGIN { printf "%.4f\n", 355/113 }'
df / | awk 'NR==2 { printf "used: %.1f%%\n", $3/$2*100 }'
printf форматирует числа без вычислений:
printf "%.2f\n" 3.14159 # 3.14
printf "%d\n" $(( 1024 ** 2 ))
Правило: $(( )) для целых, bc для точных дробей, awk когда уже в пайпе.
#linux #bash #sysadmin
