операции с плавающей запятой с bash
Как я могу преобразовать строку " 620/100 "в" 6.2 " в скрипте bash
контекст моего вопроса касается обработки изображений. Данные EXIF кодируют фокусное расстояние в дробном формате, в то время как мне нужна соответствующая десятичная строка.
Спасибо за помощь, Оливье
3 ответов
использовать bc -l
bc -l <<< "scale=2; 620/100"
6.20
или awk:
awk 'BEGIN{printf "%.2f\n", (620/100)}'
6.20
bash
не поддерживает плавающую точку.
можно использовать bc
:
$ echo "50/10" | bc -l
5.00000000000000000000
$ echo "scale=1; 50/10" | bc -l
5.0
Спасибо за ответы. БК - вот что мне было нужно.
Я не знаю, является ли публикация результата полезной. Во всяком случае, это последний фрагмент кода для экстраполирования фокусного расстояния фотографии и печати ее в десятичном формате. Он должен работать для всех камер. Протестировано на 4 камерах 3 разных марок.
F="your_image.JPG"
EXIF=$(exiv2 -p v "$F")
FocalFractional=$( echo "$EXIF" | grep -E '[^ ]* *Photo *FocalLength '| grep -iohE "[^ ]* *$" )
Formula="scale=2; "$FocalFractional
FocalDecimal=$( bc -l <<< "$Formula" )
echo $ FocalDecimal