BASH 回声显示一些异常行为

Yuk*_*ita 0 bash

这是给我带来问题的简单命令 -

echo hafsda sfsdfdsfs $ymn $ymx $range
Run Code Online (Sandbox Code Playgroud)

此命令的输出即将到来 -

 2.568 sfsdfdsfs 86.72
Run Code Online (Sandbox Code Playgroud)

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

echo hafsda sfsdfdsfs 1 2 $range
Run Code Online (Sandbox Code Playgroud)

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

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

gle*_*man 5

您的脚本可能具有 DOS 样式的 CRLF 行结尾。我怀疑你实际上有ymn="86.72\r" ymx="89.28\r"range="2.56\r"。你可以在你的脚本中测试这个

echo hafsda sfsdfdsfs $ymn $ymx $range | od -c
Run Code Online (Sandbox Code Playgroud)

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

确保更改文本编辑器的设置并使用 unix 行结尾。