当我尝试在我的bash脚本中以0.5的增量运行for循环时。该脚本提供德国浮动系统中的输出。 例如:
for i in $(seq 2.0 0.5 4.0)
do
echo $i
done
它给出的输出是:
2,0
2,5
3,0
3,5
4,0
我需要修复此问题,因为我的大多数文件都是根据这些数字命名的。出现此错误,我的脚本无法读取此类文件。有什么建议吗?
答案 0 :(得分:1)
这可能是由您的区域设置引起的,特别是LC_NUMERIC
。
在我的系统上,我没有看到您描述的症状:
$ locale | grep LC_NUMERIC
LC_NUMERIC="en_US.UTF-8"
我不知道您在系统上安装了哪些语言环境。据推测,您的默认语言环境使用逗号表示小数。 "C"
区域设置使用.
。
更改
seq 2.0 0.5 4.0
到
LC_NUMERIC=C seq 2.0 0.5 4.0
应该这样做。
如果您希望一般使用.
而不是,
,可以考虑在shell启动文件$LC_NUMERIC
或.bashrc
中设置.bash_profile
或者其他什么)。
答案 1 :(得分:0)
echo "${i/,/.}" # Recommend double quoting the variables.
会做到这一点。我们在这里做的是shell [ parameter expansion ]。