我有这个简单的脚本:
#!/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
答案 0 :(得分:2)
也许来自servelet的输出带有“破碎”的信息。字符?
本身,但是它返回CRLF而不是只引起奇怪输出的LF。在使用数据之前剥去CR。