2012-05-07 2 views
0

환경 : 콘 셸 (KSH)구문 분석 문자열 토큰, 수출 및 동적 에코 값

내가 사용 변수를 수출하고있다 :

eval $(echo '"EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD"' | 
sed 's/^"/export /g;s/=/="/g;s/#/"\nexport /g') 

을 동적으로 이러한 변수의 값을 표시하려고 :

eval $(echo EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD|sed 's/^/echo $/g;s/=/="/g;s/#/"\necho $/g' | sed 's/=.*$//g') 

하지만 출력이 다음과 같이 표시됩니다.

20110203-210000 echo Forigen Exchange Today echo EOD 

나는 왜 여분의 에코가 만족스러운 결과가 아닌지 알아낼 수 없다. 다음과 같아야합니다 :

20110203-210000 
Forigen Exchange Today 
EOD 

답변

1

대체를 수행하는 방법은 줄 바꿈을 삭제합니다.

echo $EffTimeStamp 
echo $InputCtxNm 
echo $RunType 

을하지만이 eval $(...)로 평가 후면 통과 할 때, 당신은 효과적으로 얻을 : 그래서 괄호 안에 무엇의 출력은 다음과 같습니다 희망 어디를가 분명하게

echo $EffTimeStamp echo $InputCtxNm echo $RunType 

... 여분의 echo이 나오고 있습니다. 방금 명시 적 끝 명령을 표시하기 위해 각 행의 마지막에 세미콜론을 추가하면, 당신이 원하는 일을해야합니다

eval $(echo EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD|sed 's/^/echo $/g;s/=/="/g;s/#/"\necho $/g' | sed 's/=.*$/;/g') 

의 출력은 다음과 같습니다

20110203-210000 
Forigen Exchange Today 
EOD