Возникла необходимость перевести секунды в милисекунды.
Скрипт:
#!/bin/bash
a=$(ffprobe -i c848a39afc54e04cc64ddd955686654b9b1c6f31 -show_entries format=duration -v quiet -of csv="p=0");
b=1000;
result=$(($a*$b));
echo $result
Вывод
./sectomilisec: line 4: 23.760000*1000: syntax error: invalid arithmetic operator (error token is ".760000*1000")
Как правильно умножить вывод операции на число?
Ответ
invalid arithmetic operator (error token is ".760000*1000")
в программе bash не реализована арифметика с плавающей точкой (только целочисленная).
для осуществления таких вычислений придётся воспользоваться какой-то другой программой. например, bc
result=$(echo "$a*$b" | bc -l)
или dc
result=$(echo "$a $b + p" | dc)
подробности:
bc: википедия, man bc, info bc
dc: википедия, man dc, info dc
кстати, в этом выражении знаки доллара перед именами переменных не нужны:
result=$(($a*$b))
достаточно (и более правильно) так:
result=$((a*b))
Комментариев нет:
Отправить комментарий