2014-11-13 31 views
0

所以我试图保留\ n所以它打印它而不是bash将其解释为换行符。我正在写一个运行服务器的屏幕,该服务器需要使用\ n在该服务器中启动一个换行符。 调用LOGINMESSAGE这样我如何保留 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'" 

在我需要它说,这/ server_message_to信息资讯$ INITPLAYER屏幕! “欢迎使用服务器$ INITPLAYER!\ n键入!帮助聊天命令”。所以在屏幕上需要保持\ n。目前它删除它或打破游戏的命令。所以基本上我想要做的就是让它在屏幕上输入,就像保持\ n的一样。

编辑:固定由于chepner

+2

你是如何使用'LOGINMESSAGE'?字符串本身*不包含反斜杠和'n',而不是换行符。 – chepner

+2

为什么你首先使用'$'...''?这就是用换行符替换'\ n'。 – chepner

+0

真的不知道。一直在编辑我所拥有的。我如何将它从$'...'更改为修复它以保持\ n。 – NoPantsMcDance

回答

1

的问题是,的LOGINMESSAGE值结束一个$'...' -quoted串,其中,所述一对\n被转换成一个新行内被评估。为了防止这种情况,只需移动除$'...'之外的最终\n。 shell自动连接未被空格分隔的字符串。

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

“致电$ LOGINMESSAGE”是什么意思?这是一个变量,而不是一个函数。您需要编辑您的问题以准确显示您期望看到的内容。目前还不清楚涉及到如此多的报价和执行层次会发生什么。 – chepner

+0

谢谢你,对不起我的解释这个哈哈的蠢材。试图弄清楚如何解释它。 – NoPantsMcDance