如何在 Bash 脚本中将字符串 "620/100" 转换成 "6.2"?
我的问题背景是图像处理方面。EXIF 数据使用分数格式编码焦距,而我需要相应的十进制字符串。
谢谢您的帮助,Olivier
使用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
感谢你的回答。bc正是我所需要的。
我不知道发布结果是否有用。无论如何,这是提取照片焦距并以十进制格式打印的最终代码。它应该适用于所有相机。已在三个不同品牌的四台相机上进行了测试。
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
bc -l <<< 100/3 对我非常有帮助。非常感谢。 但是,如果有人需要使用变量执行十进制算术,并且结果必须保存在新变量中,请尝试以下语法: answer=$(bc -l <<< $num_1*$num_2)