2014-11-13 2 views
0

그래서 \ n을 보존하려고 시도하고 있으므로 bash가 개행 문자로 해석하지 않고 인쇄합니다. 해당 서버에서 개행을 시작하기 위해 \ n을 사용해야하는 서버를 실행하는 화면에 쓰고 있습니다. 내가이/server_message_to 정보 정보 $ INITPLAYER을 말할 필요가 화면에서이어떻게하면 따옴표로 n을 보존합니까?

LOGINMESSAGE="Welcome to the server $INITPLAYER! \n Type !HELP for chat commands" 

as_user "screen -p 0 -S $SCREENID -X stuff $'/server_message_to info \"$INITPLAYER\" \"$LOGINMESSAGE\"\n'" 

같은 호출 로그인 메시지! "서버 $ INITPLAYER에 오신 것을 환영합니다! \ n 채팅 명령어에 대해 HELP를 입력하십시오". 그래서 화면에 \ n을 유지해야합니다. 현재 게임을 지우거나 명령을 깨뜨립니다. 그래서 기본적으로 내가하려고하는 것은 그것이 화면에 정확하게 입력하는 것입니다.

EDIT : 고정 덕분

+2

어떻게 'LOGINMESSAGE'를 사용하고 있습니까? 문자열 자체는 개행이 아닌 백 슬래시와'n'을 포함합니다. – chepner

+2

왜 처음에'$ '...''을 사용하고 있습니까? 이것이'\ n'을 개행 문자로 대체 한 것입니다. – chepner

+0

정말 모르겠다. 내가 가진 것을 편집하고있어. $ '...'에서 그것을 어떻게 변경하여 \ n을 유지하도록 고칠 수 있습니까? – NoPantsMcDance

답변

1

문제는 LOGINMESSAGE의 값이 \n 쌍 개행 변환하는 $'...' -quoted 문자열 내부 평가 끝낸다이다 chepner한다. 이를 방지하려면 \n의 마지막 부분을 제외한 모든 부분을 $'...' 외부로 이동하십시오. 쉘은 공백으로 구분되지 않은 문자열을 자동으로 연결합니다.

as_user "screen ... '/server_message_to info \"$INITPLAYER\" \"$LOGINMESSAGE\"'$'\n'" 
+1

"$ $ LOGINMESSAGE를 (를) 호출하는"의미는 무엇입니까? 변수가 아니라 함수입니다. 보고 싶은 내용을 정확히 나타내려면 질문을 편집해야합니다. 수많은 인용과 실행 계층에서 어떤 일이 일어나야하는지는 명확하지 않습니다. – chepner

+0

고마워,이 롤을 설명하는 나에게 허름한 데 대한 미안. 그것을 설명하는 방법을 알아 내려고 노력했다. – NoPantsMcDance