bash中的德语到英语浮动系统

时间:2016-07-19 21:30:16

标签: linux bash ubuntu for-loop

当我尝试在我的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

我需要修复此问题,因为我的大多数文件都是根据这些数字命名的。出现此错误,我的脚本无法读取此类文件。有什么建议吗?

2 个答案:

答案 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 ]