BASH回显显示一些异常行为

时间:2019-03-25 14:50:06

标签: bash

这是给我带来麻烦的简单命令-

echo hafsda sfsdfdsfs $ymn $ymx $range

此命令的输出即将到来-

 2.568 sfsdfdsfs 86.72

ymn = 86.72 ymx = 89.28range = 2.56所在的位置。这仅在我使用变量时发生。以下命令可以正常工作-

echo hafsda sfsdfdsfs 1 2 $range

此外,如果我尝试直接在终端中运行该命令,第一个命令也可以正常工作。这只是脚本。我也尝试使用printf,但是遇到了类似的结果。

我什至不知道要用谷歌来解决这个问题。我根本无法理解正在发生的事情。那么,这里发生了什么?这是可重现的还是仅仅是我系统上的一些错误?如果是,那可能是什么问题?

1 个答案:

答案 0 :(得分:4)

您的脚本可能具有DOS样式的CRLF行结尾。我怀疑您实际上有ymn="86.72\r" ymx="89.28\r"range="2.56\r"。您可以使用

在脚本中对此进行测试
echo hafsda sfsdfdsfs $ymn $ymx $range | od -c

您可以使用dos2unixsed -i 's/\r$// script.sh`修复脚本。

确保更改文本编辑器的设置时不要使用unix行尾。