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)"