这是给我带来问题的简单命令 -
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.28和range = 2.56。这仅在我使用变量时发生。以下命令工作正常 -
echo hafsda sfsdfdsfs 1 2 $range
Run Code Online (Sandbox Code Playgroud)
此外,如果我尝试直接在终端中运行相同的命令(第一个),则它可以正常工作。这只是一个脚本。我也尝试使用 printf 但遇到了类似的结果。
我什至不明白用谷歌来解决这个问题。我根本无法理解发生了什么。那么,这里发生了什么?这是可重现的还是只是我系统上的一些错误,如果是,可能是什么问题?
您的脚本可能具有 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)
您可以使用dos2unix或sed -i 's/\r$//script.sh`修复您的脚本。
确保更改文本编辑器的设置并使用 unix 行结尾。