2016-09-05 3 views
0

에서 CONCATENATE 변수 나는이 간단한 스크립트가있을 때 :이상한 행동 쉘 스크립트

#!/usr/bin/ksh 

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

자바 서블릿을 호출 한 다음이 스타일의 서버 목록을 반환 스크립트 list.ksh :

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 

보시다시피, 의 출력 "Parameter2 : $ param2 - 2"은 완전히 이상한 선입니다. 예를 들어, 줄 끝의 숫자 2는 출력 시작 부분에 나타납니다.

나는 분석하는데 많은 시간을 투자했지만, 아무 것도 얻지 못했습니다.

의견이 있으십니까? 어쩌면 서블릿의 출력물에 '깨진'문자가있을 수 있습니까?

업데이트 : 코멘트를 읽은 후이 문제를 해결할 수

/아래에 답합니다.

난 그냥과 서블릿에서/R/N를 교체했다 '/ n'을 유닉스 스타일에 따라 :

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

당신에게 :

나는 한 줄에를했습니다 여기에 많은 정보를 찾을 수 있습니다 : Remove carriage return in Unix

+1

Java 서블릿은 캐리지 리턴/줄 바꿈 쌍으로 끝나는 줄을 반환합니다. – chepner

+0

감사합니다 chepner. 당신이 옳았. –

답변

2

어쩌면 서브렛의 출력이 '깨진'문자로 나타 납니까?

하지 깨진 자체하지만 이상한 출력을 일으키는 대신 LFS의있는 CRLF를 반환합니다. 데이터를 사용하기 전에 CR을 제거하십시오.

+0

죄송합니다. Ignacio,하지만 'Strip the CRs'는 무엇을 의미합니까? –

+0

나는 그것에 대해 더 많이 연구 할 수 있었고 이해한다. 유닉스 스타일에 따라 '/ r/n'을 '\ n'으로 바꿔야 만했습니다. 고마워. 나는 해결책으로 질문을 업데이트 할 것이다. –