Вступ до Bash Scripting
Alex Scriven
Data Scientist
Числа не вбудовані в оболонку, як у більшості REPL (консолей) на кшталт R і Python
У Python або R ви можете зробити так:
>>> 1 + 4
5
Воно поверне потрібний результат!
Рідної підтримки чисел немає:
(У терміналі)
1 + 4
bash: 1: command not found
expr — корисна утиліта (як cat чи grep)
Тепер це спрацює (у терміналі):
expr 1 + 4
5
Чудово!
expr не вміє працювати з десятковими дробами:
(У терміналі)
expr 1 + 2.5
expr: not a decimal number: '2.5'
Але не хвилюйтеся — є розв'язання.
bc (basic calculator) — корисна консольна програма.
Її можна запустити в терміналі та рахувати:

Користуватися bc без відкриття калькулятора можна через конвеєр:
echo "5 + 7.5" | bc
12.5
У bc є аргумент scale — кількість знаків після коми.
echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc
Зверніть увагу на ; для відокремлення «рядків» у терміналі
3.333
Числові змінні можна задавати так само, як рядкові:
dog_name='Roger' dog_age=6echo "My dog's name is $dog_name and he is $dog_age years old"
Зверніть увагу: dog_age="6" спрацює, але це буде рядок!
My dog's name is Roger and he is 6 years old
Варіант нотації зі здвоєними дужками для числових виразів:
expr 5 + 7
echo $((5 + 7))
12
12
Зверніть увагу: цей метод використовує expr, не bc (без дробів!)
Пам'ятаєте, як ми викликали підоболонку в попередньому уроці?
Це дуже корисно для числових змінних:
model1=87.65 model2=89.20echo "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
Вступ до Bash Scripting