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

时间:2016-09-05 20:33:41

标签: bash shell ksh

我有这个简单的脚本:

 #!/usr/bin/ksh

while read param1 param2
do
        echo "Parameter1: $param1 - 1"
        echo "Parameter2: $param2 - 2"
done <<< "$(list.ksh)"

脚本 list.ksh 调用Java servlet,然后返回此样式的服务器列表:

192.168.1.1 server1
192.168.1.2 server2

在我的简单脚本的输出中,我得到以下结果:

Parameter1: 192.168.1.1 - 1
 - 2 eter2: server1
Parameter1: 192.168.1.2 - 1
 - 2 eter2: server2

正如您所看到的, echo&#34; Parameter2:$ param2 - 2&#34; 的输出是一个完全奇怪的行。例如,行末的数字2出现在输出的开头。

我花了很多时间分析它,但我没有得到任何东西。

你知道吗?也许来自servlet的输出带来了“破碎”。字符?

更新:

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

我只需要用&#39; / n&#39;替换servlet中的/ r / n。根据unix风格:

我已经在一行中做到了:

param2="$(echo $param2 | dos2unix)"

您可以在此处找到大量信息:Remove carriage return in Unix

1 个答案:

答案 0 :(得分:2)

  

也许来自servelet的输出带有“破碎”的信息。字符?

本身,但是它返回CRLF而不是只引起奇怪输出的LF。在使用数据之前剥去CR。