2010-12-06 3 views
2

다음 출력은 로그에 출력되고 err_file에 대한 오류가있는 쉘 스크립트입니다. 그러나, 나는 특별히 stderr에 어떤 문장을 반향시키고 싶다. Pls는 내가 조건이 있지만 잘못 수 std 경우 수행하는 방법을 알아낼 수 없었다, 마지막의 출력을 보내려ksh 특정 문에 대한 stderr에 echo

#!/bin/ksh 
echo "paramPassed: $0 $#" 

err_file="error_file.txt" 
new_file="new_file.txt" 

exec >> ${new_file} 
#exec >> ${new_file} 2>${err_file} 
#exec >> ${new_file} 2>&1 

if [ $# -eq 1 ]; then 
    username=$1 
fi 

userInfo=$(paramInfo ${username} | awk -F: '{print $2}') 
echo ${userInfo} 

rcp ${err_file} mtvst32:/rcs/ver34/${err_file} 

if [ $? -ne 0 ]; then 
     #This doesn't work. Need the following to go to console 
     echo "UserInfo.SH FAILED copy to mtvst32" >> &2; 
fi 

도움이됩니다.

답변

8

오류 메시지가 표시되는 것 같습니다. 게시 한 경우 도움이되었습니다.

echo "UserInfo.SH FAILED copy to mtvst32" >&2 

은 공간과 > 중 하나를 제거 : 그러나,이 문제를 해결할 가능성이 높습니다.

+0

감사합니다. Dennis. 그게 효과가 있었어. 내가 실제로 원했던 것은 위의 같은 코드에서 exec >> $ {new_file} 2> & 1 이고 콘솔에 마지막 echo 문만 보내면됩니다. 거기에 어쨌든 할 수 있습니까? 즉, 모든 오류는 다음을 제외한 동일한 파일로 이동해야합니다. [$? -ne 0]; 다음 #이 작동하지 않습니다. 콘솔에 가려면 다음이 필요합니다. echo "UserInfo.SH FAILED copy to mtvst32"> & 2; 콘솔에 보내고 싶습니다. 그러나 위의 경우 리디렉션으로 인해 new_file로 이동합니다. 감사합니다. . – Kiran

+0

@Kiran :'exec >> $ {new_file} 2> & 1' (나는 당신의 질문에 주석을 달았 기 때문에 그것을 무시했습니다) 전에'exec 3> & 2'를 추가하여 FD 2를 FD 3에 복사하십시오. 콘솔에 "echo"... "> & 3'이 표시됩니다. –

+0

감미로운 .. Dennis에게 감사드립니다. 그거야. – Kiran