要在分离屏幕中执行命令,我可以执行此操作(创建屏幕后screen -dmS myscreen bash
):
screen -S myscreen -X stuff $'echo hello\n'
然而,对于环境变量,此语法与$
混淆:
MSG="hello"
screen -S myscreen -X stuff $'echo $MSG\n' #doesn't work
我该怎么做?
答案 0 :(得分:1)
对需要展开变量的部分使用双引号字符串,对包含转义序列的部分使用带引号的字符串,并将它们连接起来。
screen -S myscreen -X stuff "echo $MSG"$'\n'
另一种选择是将换行符分配给变量:
NL=$'\n'
screen -S myscreen -X stuff "echo $MSG$NL"
BTW,MSG
不是环境变量,它只是一个shell变量。除非export
,否则它不会成为环境变量。
答案 1 :(得分:0)
另一种选择,虽然它看起来不是一个干净的例子......
MSG="hello"
screen -S myscreen -X stuff "echo $MSG
"