Bash 在ShellScript中连接变量时的奇怪行为

Bash 在ShellScript中连接变量时的奇怪行为,bash,shell,ksh,Bash,Shell,Ksh,我有一个简单的脚本: #!/usr/bin/ksh while read param1 param2 do echo "Parameter1: $param1 - 1" echo "Parameter2: $param2 - 2" done <<< "$(list.ksh)" 在简单脚本的输出中,我得到以下结果: Parameter1: 192.168.1.1 - 1 - 2 eter2: server1 Parameter1: 192.

我有一个简单的脚本:

 #!/usr/bin/ksh

while read param1 param2
do
        echo "Parameter1: $param1 - 1"
        echo "Parameter2: $param2 - 2"
done <<< "$(list.ksh)"
在简单脚本的输出中,我得到以下结果:

Parameter1: 192.168.1.1 - 1
 - 2 eter2: server1
Parameter1: 192.168.1.2 - 1
 - 2 eter2: server2
如您所见,echo“Parameter2:$param2-2”的输出是一条完全奇怪的线。例如,行尾的数字2显示在输出的开头

我花了很多时间分析它,但我什么都没有得到

你知道吗?可能Servlet的输出带有“断开”字符

更新:

在阅读下面的评论/答案后,我可以解决这个问题

根据unix风格,我只需将servlet中的/r/n替换为“/n”:

我用一行话做到了:

param2="$(echo $param2 | dos2unix)"
你可以在这里找到很多信息:

可能Servlet的输出带有“断开”字符

本身没有损坏,但它返回的是CRLFs,而不是导致奇怪输出的LFs。在使用数据之前剥离CRs

可能Servlet的输出带有“断开”字符


本身没有损坏,但它返回的是CRLFs,而不是导致奇怪输出的LFs。在使用数据之前,请先剥离CRs。

Java servlet正在返回以回车/换行对结尾的行。谢谢chepner。你说得对。Javaservlet正在返回以回车/换行对结尾的行。谢谢chepner。你是对的。对不起,伊格纳西奥,但是你说的“剥去CRs”是什么意思?我可以研究更多,我理解。根据unix的风格,我不得不将“/r/n”替换为“\n”,结果成功了。谢谢。我会用解决方案更新问题。对不起,伊格纳西奥,你说的“剥去CRs”是什么意思?我可以研究更多,我理解。根据unix的风格,我不得不将“/r/n”替换为“\n”,结果成功了。谢谢。我将用解决方案更新问题。
param2="$(echo $param2 | dos2unix)"